select sequence.currval 时报错 ORA-08002: 序列XXXX尚未在此进程中定义,sequencecurrval
情景描述:
1.我们创建一个表,表名为S_DEPART
-- Create table create table S_DEPART ( departid INTEGER not null, departname NVARCHAR2(40) not null, departorder INTEGER default 0 )2.创建一个sequence序列,名称为S_DEPART_S
CREATE SEQUENCE S_DEPART_S MINVALUE 1 MAXVALUE 9999999999999999999999 START WITH 1 INCREMENT BY 1 NOCACHE;3.下面我们往该表里插入一条记录
insert into S_Depart(departid,Departname,Departorder)VALUES(S_DEPART_S.CURRVAL,'12345',1);此时,出现如下错误:
报错 ORA-08002: 序列XXXX尚未在此进程中定义
错误分析:sequence序列的CURRVAL必须要先用NEXTVAL初始化一下,以后就可以用CURRVAL了。
解决办法:先用NEXTVAL初始化:
<pre name="code" class="sql">insert into S_Depart(departid,Departname,Departorder)VALUES(S_DEPART_S.NEXTVAL,'12345',1);此时我们可以查询sequence序列S_Depart_s的值:
SELECT S_DEPART_S.CURRVAL FROM dual;从下图我们可以看到S_Depart_s序列的当前值为2
版权声明:本文为博主原创文章,未经博主允许不得转载。
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.
同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。