欢迎来到天天文库
浏览记录
ID:47105589
大小:36.50 KB
页数:3页
时间:2019-08-04
《oracle开发中序列的使用》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、序列是一数据库对象,利用它可生成唯一的整数。一般使用序列自动地生成主码值。一个序列的值是由特殊的Oracle程序自动生成,因此序列避免了在应用层实现序列而引起的性能瓶颈。Oracle序列允许同时生成多个序列号,而每一个序列号是唯一的。当一个序列号生成时,序列是递增,独立于事务的提交或回滚。允许设计缺省序列,不需指定任何子句。该序列为上升序列,由1开始,增量为1,没有上限。 1)建立序列命令 CREATESEQUENCE[user.]sequence_name [incrementbyn] [startwithn]
2、[maxvaluen
3、nomaxvalue] [minvaluen
4、nominvalue]; INCREMENTBY:指定序列号之间的间隔,该值可为正的或负的整数,但不可为0。序列为升序。忽略该子句时,缺省值为1。 STARTWITH:指定生成的第一个序列号。在升序时,序列可从比最小值大的值开始,缺省值为序列的最小值。对于降序,序列可由比最大值小的值开始,缺省值为序列的最大值。 MAXVALUE:指定序列可生成的最大值。 NOMAXVALUE:为升序指定最大值为1027,为降序指定最大值为-1。 MINVALU
5、E:指定序列的最小值。 NOMINVALUE:为升序指定最小值为1。为降序指定最小值为-1026。 2)更改序列命令 ALTERSEQUENCE[user.]sequence_name [INCREMENTBYn] [MAXVALUEn
6、NOMAXVALUE] [MINVALUEn
7、NOMINVALUE]; 修改序列可以: ?修改未来序列值的增量。 ?设置或撤消最小值或最大值。 ?改变缓冲序列的数目。 ?指定序列号是否是有序。 3)删除序列命令 DROPSEQUENCE[user.]
8、sequence_name; 从数据库中删除一序列。 创建一个序列号的语句:CREATESEQUENCEEXAM_NO_SEQSTARTWITH1484MAXVALUE9999999999MINVALUE1CYCLECACHE20NOORDER; PB中取序列号的用法:stringv_exam_no//获取申请序号SELECTexam_no_seq.nextvalINTO:v_exam_noFROMdualusingghis_database;ifghis_database.SQLCODE<>0thenmessagebox
9、("","取检查序号出错")returnendif在oracle中sequence就是所谓的序列号,每次取的时候它会自动增加,一般用在需要按序列号排序的地方。1、CreateSequence你首先要有CREATESEQUENCE或者CREATEANYSEQUENCE权限,CREATESEQUENCEemp_sequenceINCREMENTBY1--每次加几个STARTWITH1--从1开始计数NOMAXVALUE--不设置最大值NOCYCLE--一直累加,不循环CACHE10;一旦定义了emp_sequence,你就可以用CURRV
10、AL,NEXTVALCURRVAL=返回sequence的当前值NEXTVAL=增加sequence的值,然后返回sequence值比如:emp_sequence.CURRVALemp_sequence.NEXTVAL可以使用sequence的地方:-不包含子查询、snapshot、VIEW的SELECT语句-INSERT语句的子查询中-NSERT语句的VALUES中-UPDATE的SET中可以看如下例子:INSERTINTOempVALUES(empseq.nextval,'LEWIS','CLERK',7902,SYSDATE,1
11、200,NULL,20);SELECTempseq.currvalFROMDUAL;但是要注意的是:-第一次NEXTVAL返回的是初始值;随后的NEXTVAL会自动增加你定义的INCREMENTBY值,然后返回增加后的值。CURRVAL总是返回当前SEQUENCE的值,但是在第一次NEXTVAL初始化之后才能使用CURRVAL,否则会出错。一次NEXTVAL会增加一次SEQUENCE的值,所以如果你在同一个语句里面使用多个NEXTVAL,其值就是不一样的。明白?-如果指定CACHE值,ORACLE就可以预先在内存里面放置一些seque
12、nce,这样存取的快些。cache里面的取完后,oracle自动再取一组到cache。使用cache或许会跳号,比如数据库突然不正常down掉(shutdownabort),cache中的sequence就会丢失.所以可
此文档下载收益归作者所有