设为首页 加入收藏

TOP

selectsequence.currval时报错ORA-08002:序列XXXX尚未在此进程中定义
2015-11-21 01:32:00 来源: 作者: 【 】 浏览:0
Tags:selectsequence.currval 时报 ORA-08002: 序列 XXXX 尚未 进程 定义

情景描述:

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初始化:

 
 
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

?

\

?

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇序列作为主键使用的原理、优缺点.. 下一篇蓝的成长记――追逐DBA(2):安..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: