分类: Oracle
2009-09-08 01:30:38
3.1.2 在PL/SQL 语句块中使用DML
编写一个PL/SQL 语句块,往STUDENT 表中插入一条新的学生记录。可以使用自己的数据作为学生记录。
为生成唯一的ID,遍历当前表中student_id 字段的最大值,赋予某变量,然后该变量增1。在本例中,要特别注意,在学生表中,邮政编码数据项有外键。这意味着,必须从ZIPCODE 表中选择邮政编码。
1. 使用Oracle 序列
Oracle 序列是一种Oracle 数据库对象,用于生成唯一的数字。可以使用序列来自动地生成主键的值。
2. 获取和递增序列值
在创建序列之后,可以使用如下伪列访问SQL 语句序列的值:
CURRVAL 返回序列的当前值。
NEXTVAL 递增当前序列值,并返回新的值。下面的语句会创建序列ESEQ:
ESEQ.NEXTVAL 的第1 次引用会返回1。第2 次引用会返回11 。接下来每次引用都会返回比上一次引用大10 的新值。
(尽管可以保证得到唯一的数字,但是无法保证得到邻近的数字。这样做会在某些系统(如生成发票编号的系统)中存在问题。)
3. 从序列获取数字
从Oracle 7.3 开始,就可以直接把序列值插入数据库表中,而无需事先获取。(以前,必须使用SELECT INTO 语法,在插入这个变量之前,把序列数字保存到一个变量中。)
下面的例子使用名为test01 的数据库表。首先,创建数据库表test01,然后创建序列test_seq,最后使用该序列来填充数据库表。