오라클에서 트리서 생성시 오류발생 0 1 186

by 정태웅 [PL/SQL] [2017.06.19 09:33:58]


안녕하세요 오라클에서 아래와 같은 트리거를 생성하는데 오류가 발생합니다 고수님들의 조언 부탁드립니다.

CREATE OR REPLACE TRIGGER TB_00002310_TRIGGER_INS_01
AFTER INSERT ON TB_INFO_PACM_00001000
DECLARE
 
  V_SQL_CODE VARCHAR2(255) :='';
  V_SQL_ERRMSG VARCHA2(255) :='';
 
BEGIN

  INSERT INTO TB_INFO_PACM_00002310
                       ( PLC_ID
                        ,REG_NM
                        ,REG_DT
                        ,CHANG_NM
                        ,CHANG_DT
                       )
           VALUES ( PLC_ID_SEQ.NEXTVAL
                        ,:OLD.REG_NM
                        ,:OLD.REG_DT
                        ,:OLD.CHANG_NM
                        ,:OLD.CHANG_DT
                       )
  ;
 
     EXCEPTION WHEN OTHERS THEN
       V_SQL_CODE := SQLCODE;
       V_SQL_ERRMSG := SQLERRM;
       DBMS_OUTPUT.PUT_LINE('TB_00002310_TRIGGER_INS_01 EXEC ERROR');
       DBMS_OUTPUT.PUT_LINE('SQL ERROR CODE:' || SQLCODE);
       DBMS_OUTPUT.PUT_LINE('SQL ERROR MESSAGE:' || SQLERRM);
       ROLLBACK;
                             
END TB_00002310_TRIGGER_INS_01;

 

오류내용

==========================[Start Time : 2017/06/19 09:27:58]==========================

SQL > CREATE OR REPLACE TRIGGER TB_00002310_TRIGGER_INS_01
AFTER INSERT ON TB_INFO_PACM_00001000
DECLARE
 
  V_SQL_CODE VARCHAR2(255) :='';

  경고와 함께 실행이 완료되었습니다.
  3/32  PLS-00103: 심볼 "end-of-file"를 만났습니다 다음 중 하나가 기대될 때:
   begin function pragma procedure subtype type <식별자>
   <큰 따옴표로 구분된 식별자> current cursor delete
   exists prior
   Time used: 20 Millis
   ==========================[Start Time : 2017/06/19 09:28:00]==========================
  
   SQL > V_SQL_ERRMSG VARCHA2(255) :=''

   ORA-00900: SQL 문이 부적합합니다
Error code: 900
SQL state: 42000

by 마농 [2017.06.19 10:06:15]

1. INSERT 트리거에서는 :OLD 사용 못합니다.
   - INSERT 는 :NEW 만 가능.
   - DELETE 는 :OLD 만 가능
  - UPDATE 는 둘 다 사용 가능
2. :OLD, :NEW 의 사용은 문장트리거에서는 사용 못합니다.
   - 행트리거에는 FOR EACH ROW 구문이 필요합니다.
   - 위치는 DECLARE 앞
3. 트리거에서는 커밋/롤백 사용 못합니다.
   - 트리거는 트리거를 발생시킨 문장의 커밋/롤백에 종속됩니다.
4. 위 1,2,3 은 논리적인 오류들이고
   - 언급하신 오류는 단순 구문오류입니다.
   - 오타 등이 없는지 확인하세요.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입