SELECT last_number
FROM all_sequences
WHERE sequence_owner = '<sequence owner>'
AND sequence_name = '<sequence_name>';
Du kan få en række forskellige sekvensmetadata fra user_sequences
, all_sequences
og dba_sequences
.
Disse synspunkter fungerer på tværs af sessioner.
EDIT:
Hvis sekvensen er i dit standardskema, så:
SELECT last_number
FROM user_sequences
WHERE sequence_name = '<sequence_name>';
Hvis du vil have alle metadata, så:
SELECT *
FROM user_sequences
WHERE sequence_name = '<sequence_name>';
Håber det hjælper...
EDIT2:
En langvarig måde at gøre det mere pålideligt på, hvis din cachestørrelse ikke er 1, ville være:
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.
Bare pas på, at hvis andre bruger sekvensen i løbet af denne tid - kan de (eller du) få
ORA-08004: sequence SEQ.NEXTVAL goes below the sequences MINVALUE and cannot be instantiated
Du vil måske også indstille cachen til NOCACHE
før nulstillingen og derefter tilbage til dens oprindelige værdi bagefter for at sikre, at du ikke har cachelagret mange værdier.