Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4958641
  • 博文数量: 1696
  • 博客积分: 10870
  • 博客等级: 上将
  • 技术积分: 18357
  • 用 户 组: 普通用户
  • 注册时间: 2007-03-30 15:16
文章分类
文章存档

2017年(1)

2016年(1)

2015年(1)

2013年(1)

2012年(43)

2011年(17)

2010年(828)

2009年(568)

2008年(185)

2007年(51)

分类: 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,最后使用该序列来填充数据库表。

 
在本试验中最后一个练习中,你会用到本章介绍的所有关键内容。
阅读(1273) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~