SELECT last_number
FROM all_sequences
WHERE sequence_owner = '<sequence owner>'
AND sequence_name = '<sequence_name>';
Você pode obter uma variedade de metadados de sequência de
user_sequences
, all_sequences
e dba_sequences
. Essas visualizações funcionam em todas as sessões.
EDITAR:
Se a sequência estiver em seu esquema padrão, então:
SELECT last_number
FROM user_sequences
WHERE sequence_name = '<sequence_name>';
Se você quiser todos os metadados, então:
SELECT *
FROM user_sequences
WHERE sequence_name = '<sequence_name>';
Espero que ajude...
EDIT2:
Uma maneira prolixa de fazer isso de forma mais confiável se o tamanho do seu cache não for 1 seria:
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.
Apenas tome cuidado para que, se outros estiverem usando a sequência durante esse período - eles (ou você) podem ficar
ORA-08004: sequence SEQ.NEXTVAL goes below the sequences MINVALUE and cannot be instantiated
Além disso, você pode querer definir o cache para
NOCACHE
antes da redefinição e depois de volta ao seu valor original para garantir que você não armazenou muitos valores em cache.