secuencias secuencia ora incrementar ejemplos ejemplo create consultar cache oracle sequence

incrementar - Oracle: la secuencia MySequence.currval aún no está definida en esta sesión



secuencias sql ejemplos (5)

¿Qué significa esto y cómo puedo evitarlo?

SELECT MySequence.CURRVAL FROM DUAL;

Resultado:

ORA-08002: secuencia MySequence.CURRVAL aún no está definida en esta sesión


Doug,

La verdadera pregunta es por qué necesita el currval cuando no ha usado un nextval en su sesión. Puede mirar la columna LAST_NUMBER de la vista USER / ALL / DBA_SEQUENCES, pero piense en los problemas de concurrencia cuando comience a usar eso.

Saludos, Rob.


Resulta que no puede usar CURRVAL hasta que haya usado NEXTVAL al menos una vez en su sesión.


mysequence.CURRVAL devuelve el último valor que se obtuvo de secuencia mysecuencia en su sesión, y por lo tanto no se define hasta que haya obtenido un valor usando mysequence.NEXTVAL al menos una vez en la sesión. El propósito de CURRVAL es permitirle usar el valor de secuencia más de una vez en su código, por ejemplo

insert into parent (parent_id, ...) values (mysequence.NEXTVAL, ...); insert into child (parent_id, ...) values (mysequence.CURRVAL, ...);

Si CURRVAL acaba de devolver el último valor obtenido de la secuencia por cualquier sesión, entonces sería inútil en el código anterior, y de hecho podría conducir a la corrupción de datos.


utilizar esta

select sequence_name, to_char(min_value) min_value, to_char(max_value) max_value, increment_by, cycle_flag, order_flag, cache_size, to_char(Last_number) last_number from user_sequences where sequence_name=''MYSEQUENCE''


select * from user_sequences where sequence_name=''SEQ_V_WORKORDER_RECNO'';

en la consulta anterior SEQ_V_WORKORDER_RECNO el nombre de mi secuencia, reemplácelo por el nombre de su secuencia