todavía sesión secuencias secuencia ora incrementar example esta ejemplos ejemplo definido create consultar cache plsql unique-constraint nextval database-trigger

plsql - sesión - cómo insertar nextval para disparar dentro de bucle



ora-08002 la secuencia todavía no se ha definido en esta sesión (2)

¿Por qué no incluir el cálculo de micl_sup_id_seq.nextval en el cursor?

cursor projMgrsCursor is select b.BU_MEMBER_ID, micl_sup_id_seq.nextval SUPID from ...

Hola, aquí hay un código para trigger y tiene un bucle for. Cuando se dispara el disparador (INSERTAR O ACTUALIZAR) hay otra tabla que los datos deben incluir es MICL_SUP

OPEN projMgrsCursor; LOOP FETCH projMgrsCursor INTO projMgr; select micl_sup_id_seq.nextval into SUPID from dual; insert into MICL_SUP VALUES ((SUPID), (SELECT SYSDATE FROM DUAL), :NEW.ENTRYADDEDBY_EMP_NO, 3000, 0,projMgr, NULL,:NEW.EMP_NO); END LOOP; CLOSE projMgrsCursor;

Esta es la estructura de la tabla. Sup_ID clave principal y única. No puedo hacer ningún cambio a la estructura de la mesa

SUP_ID -primary key ASSIGNED_DATE ASSIGNED_BY_EMP_NO AMOUNT_LIMIT IS_OVVERRIDDEN SUP_EMP_NO RTD_EMP EMP_NO

Para ingresar sup_ID, uso select micl_sup_id_seq.nextval into SUPID from dual; pero cuando ejecuto este código, aparece un error "RA-00001: unique constraint violated" (esto no es un error de compilación) ¿Hay alguna otra forma de agregar sup_ID? donde fui mal? pls me ayuda Voy a perder mi trabajo debido a este desencadenante y soy un novato gracias de antemano Ayuda urgente necesitaba esta pregunta está relacionada con este desencadenador Error triggers PlSQL ORA-0000 ORA-06512:


Intenta reescribir tu código como:

DECLARE nSupid NUMBER; projMgr VARCHAR2(32767); BEGIN OPEN projMgrsCursor; LOOP FETCH projMgrsCursor INTO projMgr; EXIT WHEN projMgrsCursor%NOTFOUND; select micl_sup_id_seq.nextval into nSUPID from dual; insert into MICL_SUP (SUPID, ASSIGNED_DATE, ASSIGNED_BY_EMP_NO, AMOUNT_LIMIT, IS_OVERRIDDEN, SUP_EMP_NO, RTD_EMP, EMP_NO) VALUES (nSupid, SYSDATE, :NEW.ENTRYADDEDBY_EMP_NO, 3000, 0, projMgr, NULL, :NEW.EMP_NO); END LOOP; CLOSE projMgrsCursor; DBMS_OUTPUT.PUT_LINE(''Successful completion''); EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE(''Exception: '' || SQLCODE || '' '' || SQLERRM); RAISE; END;

Comparte y Disfruta.