Oracle: sequence MySequence.currval еще не определена в этом сеансе - PullRequest
37 голосов
/ 01 мая 2009

Что это значит, и как я могу обойти это?

SELECT MySequence.CURRVAL FROM DUAL;

Результат:

ORA-08002: последовательность MySequence.CURRVAL еще не определена в этом сеансе

Ответы [ 5 ]

48 голосов
/ 01 мая 2009

mysequence.CURRVAL возвращает последнее значение, которое было получено из последовательности mysequence в вашем сеансе, и, следовательно, не определено, пока вы не получите значение, используя mysequence.NEXTVAL хотя бы один раз в сеансе. Цель CURRVAL - позволить вам использовать значение последовательности более одного раза в вашем коде, например,

insert into parent (parent_id, ...) values (mysequence.NEXTVAL, ...);

insert into child (parent_id, ...) values (mysequence.CURRVAL, ...);

Если бы CURRVAL только что вернул последнее значение, полученное из последовательности в любом сеансе , то это было бы бесполезно в приведенном выше коде и фактически могло бы привести к повреждению данных!

25 голосов
/ 01 мая 2009

Оказывается, вы не можете использовать CURRVAL, пока не используете NEXTVAL хотя бы один раз в сеансе.

13 голосов
/ 05 марта 2010

используйте это

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'
3 голосов
/ 01 мая 2009

Дуга,

Реальный вопрос в том, зачем вам нужен currval, если вы не использовали nextval в своей сессии? Вы можете посмотреть на столбец LAST_NUMBER представления USER / ALL / DBA_SEQUENCES, но подумайте о проблемах параллелизма, когда вы начнете его использовать.

С уважением, Роб.

2 голосов
/ 05 февраля 2014
select * from user_sequences     where sequence_name='SEQ_V_WORKORDER_RECNO';

в приведенном выше запросе SEQ_V_WORKORDER_RECNO имя моей последовательности замените его именем вашей последовательности

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...