SELECT last_number
FROM all_sequences
WHERE sequence_owner = '<sequence owner>'
AND sequence_name = '<sequence_name>';
Z user_sequences
můžete získat různá sekvenční metadata , all_sequences
a dba_sequences
.
Tato zobrazení fungují napříč relacemi.
UPRAVIT:
Pokud je sekvence ve vašem výchozím schématu, pak:
SELECT last_number
FROM user_sequences
WHERE sequence_name = '<sequence_name>';
Pokud chcete všechna metadata, pak:
SELECT *
FROM user_sequences
WHERE sequence_name = '<sequence_name>';
Doufám, že to pomůže...
EDIT2:
Dlouhý způsob, jak to udělat spolehlivěji, pokud velikost mezipaměti není 1, by byl:
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.
Jen si dejte pozor, pokud ostatní během této doby používají sekvenci - oni (nebo vy) mohou dostat
ORA-08004: sequence SEQ.NEXTVAL goes below the sequences MINVALUE and cannot be instantiated
Můžete také chtít nastavit mezipaměť na NOCACHE
před resetováním a poté zpět na původní hodnotu, abyste se ujistili, že jste do mezipaměti neuložili mnoho hodnot.