SELECT last_number
FROM all_sequences
WHERE sequence_owner = '<sequence owner>'
AND sequence_name = '<sequence_name>';
È possibile ottenere una varietà di sequenza di metadati da user_sequences
, all_sequences
edba_sequences
.
Queste viste funzionano attraverso le sessioni.
MODIFICARE:
Se la sequenza è nello schema predefinito, allora:
SELECT last_number
FROM user_sequences
WHERE sequence_name = '<sequence_name>';
Se vuoi tutti i metadati, allora:
SELECT *
FROM user_sequences
WHERE sequence_name = '<sequence_name>';
Spero che sia d'aiuto...
EDIT2:
Un modo lungo e complicato di farlo in modo più affidabile se la dimensione della cache non è 1 sarebbe:
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.
Fai attenzione che se altri usano la sequenza durante questo periodo, loro (o te) potrebbero ottenerli
ORA-08004: sequence SEQ.NEXTVAL goes below the sequences MINVALUE and cannot be instantiated
Inoltre, potresti voler impostare la cache su NOCACHE
prima del ripristino e quindi tornare al suo valore originale in seguito per assicurarti di non aver memorizzato nella cache molti valori.