2010-02-25 3 views
2

실패 : 나는 아래의 오류가 발생하고있는 테이블에 삽입하려고오라클 트리거 내가 트리거를 작성한있는 테이블이 -ORA-04098

CREATE OR REPLACE TRIGGER ac01_control_trigg 
AFTER INSERT ON ac1_control_test 
FOR EACH ROW 
DECLARE 
    BEGIN 
    IF :NEW.cur_pgm_name = 'LSN' 
    AND :NEW.nxt_pgm_name ='MD' 
    AND :NEW.file_status='RD' THEN 
    INSERT INTO ac1_control_test 
    (FILE_NAME, FILE_PATH,FILE_STATUS,CUR_PGM_NAME,NXT_PGM_NAME) 
    VALUES 
    (:NEW.FILE_NAME, :NEW.FILE_PATH,:NEW.FILE_STATUS,:NEW.CUR_PGM_NAME,'MD_MPS'); 
END IF; 
END ac01_control_trigg; 

!

ORA-04098: trigger 'CNGDB18.AC01_CONTROL_TRIGG' is invalid and failed re-validation 

아무도 도와 줄 수 있습니까? 난 두꺼비에 트리거를 컴파일 할 때

또한, 나는 다음과 같이 컴파일 오류가 점점 오전 :

LINE/COL ERROR 
-------- ----------------------------------------------------------------- 
3/65  PLS-00049: bad bind variable 'NEW_FILE_STATUS' 

을하지만,이와 무슨 일입니까? 이 오류의 의미는 무엇입니까?

답변

3

편집이 : 이제 우리는 메시지가 표시 것으로,이 솔루션은 간단합니다 :)

사용
:NEW.file_status='RD' 대신
:new_file_status='RD'


트리거 객체가 유효하지 않습니다 (문제와 함께있다 코드).

시험이와 함께 :

SELECT object_name, status 
FROM user_objects 
WHERE object_name = 'AC1_CONTROL_TRIGG'; 

반환해야 :
AC1_CONTROL_TRIGG INVALID

오류에 대한 설명을 얻을 수있는 SQL*Plus에 다음을 시도 할 수 있습니다 :

ALTER TRIGGER ac1_control_trigg COMPILE; 

SHOW ERROR TRIGGER ac1_control_trigg; 

이 두꺼비를 사용하여, 당신을 이 두 줄을 편집기에 입력하고이를 선택하고 Editor>Execute SQL via SQL*Plus을 사용하십시오.

+0

감사합니다. 내 질문을 편집했습니다.하지만 여전히 문제가 해결되지 않습니다. ( – Vijay

+0

감사합니다. 문제가 해결되었습니다. :) – Vijay

+0

듣기 좋네요 :) –

관련 문제