赞
踩
一、Oracle数据库
1、创建序列
- SQL> CREATE SEQUENCE name [INCREMENT BY n]
- [START WITH n] [{MAXVALUE n | NOMAXVALUE}]
- [{MINVALUE n | NOMINVALUE}] [{CYCLE | NOCYCLE}]
- [{CACHE n | NOCACHE}]
2、查询序列
(1)查询下一个将要使用的序列
select SEQ_NAME.nextval from dual
(2)查询当前序列
select SEQ_NAME.currval from dual
使用这条语句的时候要特别注意,因为在使用currval之前,必须先使用nextval,否则就会异常;而且,必须在同一个连接内,先使用nextval之后,才能使用currval。如果使用了nextval,然后断开了连接;重新连接后使用currval仍然会异常。
(3)查询序列详细信息(Oracle对于不同用户创建的Sequence是隔开的,所以也可以不用传入用户名)
select SEQUENCE_OWNER,SEQUENCE_NAME from dba_sequences where sequence_owner='用户名';
3、更改序列
- SQL> ALTER SEQUENCE sequence [INCREMENT BY n] [{MAXVALUE n | NOMAXVALUE}]
- [{MINVALUE n | NOMINVALUE}]
- [{CYCLE | NOCYCLE}] [{CACHE n | NOCACHE}];
注意: 不能改变它的起始值(但是有其他的方法实现这一功能,参见最后Oracle和DB2差异比较)
如果要改变序列的起始值, 先把序列号删除掉, 再新建一个。
4、删除序列
SQL>DROP SEQUENCE sequence;
5、Oracle数据字典
二、DB2数据库
1、创建序列
- CREATE SEQUENCE <sequence-name>
-
- AS data-type 默认 As Integer
- START WITH <numeric-constant>
- INCREMENT BY <numeric-constant> 默认 INCREMENT BY 1
- MINVALUE <numeric-constant> | NO MINVALUE 默认 NO MINVALUE
- MAXVALUE <numeric-constant> | NO MAXVALUE 默认 NO MAXVALUE
- NO CYCLE | CYCLE 默认 NO CYCLE
- CACHE <numeric-constant> | NO CACHE 默认 CACHE 20
- NO ORDER | ORDER 默认 NO ORDER
-
2、查询序列
(1)查询下一个将要使用的序列
select nextval for seq_name from sysibm.sysdummy1;
(2)查询当前序列
select prevval for seq_name from sysibm.sysdummy1;
(3)查询序列详细信息(当前用户,current user表示当前连接的用户,相当于内置变量)
SELECT * FROM syscat.sequences where SEQSCHEMA = current user;
3、更改序列
同Oracle,需以DB2语法
4、删除序列
同Oracle
三、Oracle与DB2的差异
除语法差异,以及查询差异外,这里主要讲一个重设开始值的差异
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。