这意味着什么,我该如何绕过它?
SELECT MySequence.CURRVAL FROM DUAL;
字符串测试结果:ORA-08002:此会话中尚未定义序列MySequence.CURRVAL
fdbelqdn1#
mysequence.CURRVAL返回从yoursession中的sequence mysequence获得的最新值,因此在会话中至少使用一次mysequence.NEXTVAL获得值之前,不会定义mysequence。CURRVAL的目的是让您在代码中多次使用序列值,例如。
insert into parent (parent_id, ...) values (mysequence.NEXTVAL, ...); insert into child (parent_id, ...) values (mysequence.CURRVAL, ...);
字符串如果CURRVAL只是返回anysession从序列中获得的最后一个值,那么它在上面的代码中将是无用的,实际上可能导致数据损坏!
qco9c6ql2#
事实证明,在会话中至少使用一次NEXTVAL之前,您无法使用CURRVAL。
hkmswyz63#
用这个
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'
字符串
ycl3bljg4#
select * from user_sequences where sequence_name='SEQ_V_WORKORDER_RECNO';
字符串在上面的查询SEQ_V_WORKORDER_RECNO中,我的序列名替换为您的序列名
SEQ_V_WORKORDER_RECNO
szqfcxe25#
道格真实的的问题是,当您在会话中没有使用nextval时,为什么需要currval?您可以查看USER/ALL/DBA_SEQUENCES视图的列LAST_NUMBER,但在开始使用它时要考虑并发问题。你好罗伯
bjg7j2ky6#
我会绕过它
select last_number from all_sequences where sequence_name = 'MySequence';
6条答案
按热度按时间fdbelqdn1#
mysequence.CURRVAL返回从yoursession中的sequence mysequence获得的最新值,因此在会话中至少使用一次mysequence.NEXTVAL获得值之前,不会定义mysequence。CURRVAL的目的是让您在代码中多次使用序列值,例如。
字符串
如果CURRVAL只是返回anysession从序列中获得的最后一个值,那么它在上面的代码中将是无用的,实际上可能导致数据损坏!
qco9c6ql2#
事实证明,在会话中至少使用一次NEXTVAL之前,您无法使用CURRVAL。
hkmswyz63#
用这个
字符串
ycl3bljg4#
字符串
在上面的查询
SEQ_V_WORKORDER_RECNO
中,我的序列名替换为您的序列名szqfcxe25#
道格
真实的的问题是,当您在会话中没有使用nextval时,为什么需要currval?您可以查看USER/ALL/DBA_SEQUENCES视图的列LAST_NUMBER,但在开始使用它时要考虑并发问题。
你好罗伯
bjg7j2ky6#
我会绕过它
字符串