这是什么意思,我该如何解决?
SELECT MySequence.CURRVAL FROM DUAL;
结果:
ORA-08002: 序列 MySequence.CURRVAL 尚未在此会话中定义
mysequence.CURRVAL 返回从会话中的序列 mysequence 获得的最新值,因此直到您在会话中至少使用一次 mysequence.NEXTVAL 获得一个值后才定义。CURRVAL 的目的是让您在代码中多次使用序列值,例如
insert into parent (parent_id, ...) values (mysequence.NEXTVAL, ...);
insert into child (parent_id, ...) values (mysequence.CURRVAL, ...);
如果 CURRVAL 只是返回任何会话从序列中获取的最后一个值,那么在上面的代码中它是没有用的,实际上可能导致数据损坏!
事实证明,在会话中至少使用一次 NEXTVAL 之前,您不能使用 CURRVAL。
用这个
select sequence_name,
to_char(min_value) min_value,
to_char(max_value) max_value,
increment_by,
cycle_flag,
order_flag,
cache_size,
to_char(Last_number) last_number
from user_sequences
where sequence_name='MYSEQUENCE'
道格,
真正的问题是,当您在会话中没有使用 nextval 时,为什么需要 currval?您可以查看 USER/ALL/DBA_SEQUENCES 视图的 LAST_NUMBER 列,但是当您开始使用它时要考虑并发问题。
问候,罗布。
select * from user_sequences where sequence_name='SEQ_V_WORKORDER_RECNO';
在上面的查询中,SEQ_V_WORKORDER_RECNO
我的序列名称将其替换为您的序列名称