SELECT last_number
FROM all_sequences
WHERE sequence_owner = '<sequence owner>'
AND sequence_name = '<sequence_name>';
Вы можете получить различные метаданные последовательности из user_sequences
, all_sequences
иdba_sequences
.
Эти представления работают через сеансы.
РЕДАКТИРОВАТЬ:
Если последовательность находится в вашей схеме по умолчанию, то:
SELECT last_number
FROM user_sequences
WHERE sequence_name = '<sequence_name>';
Если вы хотите все метаданные, то:
SELECT *
FROM user_sequences
WHERE sequence_name = '<sequence_name>';
Надеюсь, поможет...
EDIT2:
Долгосрочный способ сделать это более надежно, если ваш размер кэша не равен 1, будет:
SELECT increment_by I
FROM user_sequences
WHERE sequence_name = 'SEQ';
I
-------
1
SELECT seq.nextval S
FROM dual;
S
-------
1234
-- Set the sequence to decrement by
-- the same as its original increment
ALTER SEQUENCE seq
INCREMENT BY -1;
Sequence altered.
SELECT seq.nextval S
FROM dual;
S
-------
1233
-- Reset the sequence to its original increment
ALTER SEQUENCE seq
INCREMENT BY 1;
Sequence altered.
Просто знайте, что если другие используют последовательность в течение этого времени - они (или вы) могут получить
ORA-08004: sequence SEQ.NEXTVAL goes below the sequences MINVALUE and cannot be instantiated
Кроме того, вы можете установить кэш NOCACHE
до сброса, а затем вернуться к его первоначальному значению, чтобы убедиться, что вы не кэшировали много значений.