Что это значит и как я могу обойти это?
SELECT MySequence.CURRVAL FROM DUAL;
Результат:
ORA-08002: последовательность MySequence.CURRVAL еще не определена в этом сеансе
Что это значит и как я могу обойти это?
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 вернул последнее значение, полученное из последовательности, с помощью любой сессии, тогда это было бы бесполезно в приведенном выше коде и фактически могло привести к повреждению данных!
Оказывается, вы не можете использовать CURRVAL, пока не используете NEXTVAL хотя бы один раз в своей сессии.
используйте этот
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'
Дуга,
Реальный вопрос, почему вам нужен currval, когда вы не использовали nextval в своей сессии? Вы можете посмотреть столбец LAST_NUMBER в представлении USER/ALL/DBA_SEQUENCES, но подумайте о проблемах concurrency, когда вы начнете использовать это.
С уважением, Роб.
select * from user_sequences where sequence_name='SEQ_V_WORKORDER_RECNO';
в приведенном выше запросе SEQ_V_WORKORDER_RECNO
мое имя последовательности заменяет его именем последовательности