内容阅读
在知识库中专注阅读,并随时返回相关工具与课程
ORA-08002常见通用
序列 CURRVAL 在此会话中尚未定义
Sequence CURRVAL is not yet defined in this session
错误描述
在当前会话中调用 NEXTVAL 之前引用了序列的 CURRVAL 伪列。CURRVAL 仅在 NEXTVAL 生成值后才可用。
可能原因
- 在此会话中调用 NEXTVAL 之前引用了 CURRVAL
- 会话重新连接且缓存的 CURRVAL 丢失
- 应用程序逻辑假设 CURRVAL 始终可用
解决方案
- 1先调用 NEXTVAL:SELECT seq_name.NEXTVAL FROM DUAL;
- 2如果以后需要,将序列值存储在变量中
- 3重构代码以始终在引用 CURRVAL 之前调用 NEXTVAL
诊断命令
SELECT sequence_name, last_number, increment_by FROM dba_sequences WHERE sequence_name = 'SEQ_NAME';SELECT sequence_owner, sequence_name FROM dba_sequences WHERE sequence_owner = 'SCHEMA';#general#sequence#currval#nextval