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.