SELECT last_number
FROM all_sequences
WHERE sequence_owner = '<sequence owner>'
AND sequence_name = '<sequence_name>';
Du kan få en mängd olika sekvensmetadata från user_sequences
, all_sequences
och dba_sequences
.
Dessa vyer fungerar över sessioner.
EDIT:
Om sekvensen finns i ditt standardschema:
SELECT last_number
FROM user_sequences
WHERE sequence_name = '<sequence_name>';
Om du vill ha all metadata:
SELECT *
FROM user_sequences
WHERE sequence_name = '<sequence_name>';
Hoppas det hjälper...
EDIT2:
Ett långrandigt sätt att göra det mer tillförlitligt om din cachestorlek inte är 1 skulle vara:
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.
Var bara uppmärksam på att om andra använder sekvensen under denna tid - kan de (eller du) få
ORA-08004: sequence SEQ.NEXTVAL goes below the sequences MINVALUE and cannot be instantiated
Du kanske också vill ställa in cachen till NOCACHE
före återställningen och sedan tillbaka till sitt ursprungliga värde efteråt för att se till att du inte har cachat många värden.