SELECT last_number
FROM all_sequences
WHERE sequence_owner = '<sequence owner>'
AND sequence_name = '<sequence_name>';
Można uzyskać wiele metadanych z sekwencji user_sequences
, all_sequences
adba_sequences
.
Te widoki działają w różnych sesjach.
EDYTOWAĆ:
Jeśli sekwencja znajduje się w Twoim domyślnym schemacie, to:
SELECT last_number
FROM user_sequences
WHERE sequence_name = '<sequence_name>';
Jeśli chcesz wszystkie metadane, to:
SELECT *
FROM user_sequences
WHERE sequence_name = '<sequence_name>';
Mam nadzieję, że to pomoże...
EDYCJA2:
Długotrwały sposób na zrobienie tego bardziej niezawodnie, jeśli rozmiar pamięci podręcznej jest inny niż 1, to:
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.
Uważaj tylko, jeśli inni używają sekwencji w tym czasie - oni (lub ty) mogą dostać
ORA-08004: sequence SEQ.NEXTVAL goes below the sequences MINVALUE and cannot be instantiated
Możesz również ustawić pamięć podręczną na NOCACHE
przed resetowaniem, a następnie przywrócić jej pierwotną wartość, aby upewnić się, że nie zapisałeś wielu wartości w pamięci podręcznej.