PLS-00201: идентификатор должен быть объявлен в ORACLE TRIGGER - PullRequest
0 голосов
/ 07 апреля 2020

У меня есть этот набор данных. Я хочу разработать триггер, который срабатывает при обновлении строк с ICICUT = IB. До сих пор это вызывает проблемы из-за ошибки «PLS-00201: должен быть объявлен идентификатор« OLD.ICICUT ». Чего мне не хватает?

ICICUT    ICICU          ICAME  
IB        11368          65625         
V         711340         63808       
V         711313         24812    
IB        711265         60238        
O         711322         21570   
RB        711370         348590 

мой триггер ....

CREATE OR REPLACE TRIGGER EOGONY.F0011_audit
BEFORE UPDATE
ON INVOICES 
REFERENCING NEW AS New OLD AS Old
FOR EACH ROW
WHEN (OLD.ICICUT = 'IB')
ENABLE
DECLARE
    v_date  varchar2(30);
BEGIN
   SELECT TO_CHAR(sysdate, 'DD/MON/YYYY HH24:MI:SS') INTO v_date from dual;
    INSERT INTO AUDIT_HISTORY_F0011 (ICICUT, ICICU, ICUSER, ICDICJ, OLD_ICAME, NEW_ICAME, ENTRY_DATE, OPERATION) 
    VALUES (:OLD.ICICUT, :OLD.ICICU , :NEW.ICUSER, :OLD.ICDICJ, :OLD.ICAME, :NEW.ICAME, v_date, 'Updating');
END;

1 Ответ

0 голосов
/ 07 апреля 2020

Мне удалось скомпилировать код без ошибок после применения этих изменений ...

CREATE OR REPLACE TRIGGER EOGONY.F0011_audit
BEFORE UPDATE
ON INVOICES 
REFERENCING NEW AS New OLD AS Old
FOR EACH ROW
ENABLE
DECLARE
    v_date  varchar2(30);

BEGIN
   IF ( :OLD.ICICUT = 'IB' ) THEN
   SELECT TO_CHAR(sysdate, 'DD/MON/YYYY HH24:MI:SS') INTO v_date from dual;

    INSERT INTO AUDIT_HISTORY_F0011 (ICICUT, ICICU, ICUSER, ICDICJ, OLD_ICAME, NEW_ICAME, ENTRY_DATE, OPERATION) 
    VALUES (:OLD.ICICUT, :OLD.ICICU , :NEW.ICUSER, :OLD.ICDICJ, :OLD.ICAME, :NEW.ICAME, v_date, 'Updating');
  END IF;
END;
/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...