Solución:
SELECT last_number
FROM all_sequences
WHERE sequence_owner="<sequence owner>"
AND sequence_name="<sequence_name>";
Puede obtener una variedad de metadatos de secuencia de user_sequences
, all_sequences
y dba_sequences
.
Estas vistas funcionan en todas las sesiones.
EDITAR:
Si la secuencia está en su esquema predeterminado, entonces:
SELECT last_number
FROM user_sequences
WHERE sequence_name="<sequence_name>";
Si quieres todos los metadatos, entonces:
SELECT *
FROM user_sequences
WHERE sequence_name="<sequence_name>";
Espero eso ayude…
EDIT2:
Una forma larga de hacerlo de manera más confiable si el tamaño de su caché no es 1 sería:
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.
Solo tenga en cuenta que si otros están usando la secuencia durante este tiempo, ellos (o usted) pueden obtener
ORA-08004: sequence SEQ.NEXTVAL goes below the sequences MINVALUE and cannot be instantiated
Además, es posible que desee configurar la caché en NOCACHE
antes del restablecimiento y luego vuelva a su valor original para asegurarse de que no haya almacenado en caché muchos valores.
select MY_SEQ_NAME.currval from DUAL;
Tenga en cuenta que solo funciona si ejecutó select MY_SEQ_NAME.nextval from DUAL;
en las sesiones actuales.