189 8069 5689

oracle的序列怎么取 oracle如何生成序列

多用户下oracle如何取得刚添加行的序列

s.nextval 不要直接放insert into里面

成都创新互联公司-云计算及IDC服务提供商,涵盖公有云、IDC机房租用、联通服务器托管、等保安全、私有云建设等企业级互联网基础服务,来电联系:028-86922220

select s.nextval into l_seq from dual;

insert into table(seq) values(l_seq);

批量的话用数组

for i in 1 .. 10000 loop

select s.nextval into l_seq(i) from dual;

end loop;

or:

服务器端直接写一个function,执行insert into 返回当前插入结果插入的seq

or...方法很多很多

oracle中如何获得某个表的正在或曾经使用过的sequence?

在oracle中sequence就是序号,每次取的时候它会自动增加。sequence与表没有关系。

1、Create Sequence

首先要有CREATE SEQUENCE或者CREATE ANY SEQUENCE权限。

创建语句如下:

CREATE SEQUENCE seqTest

INCREMENT BY 1 -- 每次加几个

START WITH 1 -- 从1开始计数

NOMAXvalue -- 不设置最大值

NOCYCLE -- 一直累加,不循环

CACHE 10; --设置缓存cache个序列,如果系统down掉了或者其它情况将会导致序列不连续,也可以设置为---------NOCACHE

2、得到Sequence值

定义好sequence后,你就可以用currVal,nextVal取得值。

CurrVal:返回 sequence的当前值

NextVal:增加sequence的值,然后返回 增加后sequence值

得到值语句如下:

SELECT Sequence名称.CurrVal FROM DUAL;

如得到上边创建Sequence值的语句为:

select seqtest.currval from dual

在Sql语句中可以使用sequence的地方:

- 不包含子查询、snapshot、VIEW的 SELECT 语句

- INSERT语句的子查询中

- INSERT语句的values中

- UPDATE 的 SET中

如在插入语句中

insert into 表名(id,name)values(seqtest.Nextval,'sequence 插入测试');

注:

第一次NEXTVAL返回的是初始值;随后的NEXTVAL会自动增加你定义的INCREMENT BY值,然后返回增加后的值。

CURRVAL 总是返回当前SEQUENCE的值,但是在第一次NEXTVAL初始化之后才能使CURRVAL,否则会出错。

oracle怎样得到下一个序列

select 序列名.Nextval from dual;--生成并获得下一个序列

select 序列名.CURRVAL from dual;--如果与上述语句为同一会话,可以通过此句获得上面生成的序列。

怎样在oracle中取出当前序列值

sequence.CURRVAL 是获得最后一次引用sequence.NEXTVAL时返回的值。

因此在当前会话中,如果是第一次访问某个序列,在引用 sequence.CURRVAL 之前必须先引用 sequence.NEXTVAL。

oracle序列

1. oracle的逻辑是,同一会话中,必须先通过NEXTVAL后,才能获取CURRVAL值

2. 关于跳号,应该是cache的作用

你可以在SQL窗口打出sequence名称,右键- 属性,或右键-查看,来查看SEQ信息

3. oracle的逻辑sequence是不会rollback的,如果想要改变start值(或当前值),必须 drop sequence 再 re-create .

给你个说明:

CREATE SEQUENCE test_sequence

INCREMENT BY 1 -- 每次加几个

START WITH 1 -- 从1开始计数

NOMAXVALUE -- 不设置最大值

NOCYCLE -- 一直累加,不循环

CACHE 10;

一旦定义了test_sequence,你就可以用CURRVAL,NEXTVAL

CURRVAL=返回 sequence的当前值(第一查询时会报未初始化,调用一次NEXTVAL后可用)

NEXTVAL=增加sequence的值,然后返回 sequence 值

比如:

test_sequence.CURRVAL

test_sequence.NEXTVAL

可以使用sequence的地方:

- 不包含子查询、snapshot、VIEW的 SELECT 语句

- INSERT语句的子查询中

- NSERT语句的VALUES中

- UPDATE 的 SET中


网站栏目:oracle的序列怎么取 oracle如何生成序列
标题URL:http://cdxtjz.cn/article/hjjcss.html

其他资讯