트리거발생 생성후 컴파일시 오류발생 0 1 1,339

by 정태웅 [PL/SQL] [2017.06.20 15:01:20]


오류_20170620.PNG (10,776Bytes)

아래와 같은 트리거를 작성했는데 컴파일시

오류(24,7): PLS-00103: 심볼 "FOR"를 만났습니다 다음 중 하나가 기대될 때: := . ( @ % ; 심볼이 ";" 계속하기 위하여 "FOR"로 치환되었습니다 발생하네요 고수님들의 조언 좀 부탁드립니다.

 

CREATE OR REPLACE TRIGGER TB_00001100_TRIG_INS_AF_01
AFTER INSERT ON TB_INFO_PACM_00001100
REFERENCING NEW AS NEW
FOR EACH ROW
 
DECLARE

   V_COUNT_CNT INT := 0;

   CURSOR CUR_CONT_ID IS
   SELECT B.CONT_ID
     FROM TB_INFO_PACM_00001000 A
        , TB_INFO_PACM_00002000 B
    WHERE A.MEM_COMY_CD = B.MEM_COMY_CD
      AND A.MEM_COMY_CD = :NEW.MEM_COMY_CD
   ;
  
BEGIN

   SELECT COUNT(*) INTO V_COUNT_CD FROM TB_INFO_PACM_11002000 A, TB_INFO_PACM_00002000 B WHERE A.CONT_ID = B.CONT_ID AND B.MEM_COMY_CD = :NEW.MEM_COMY_CD;
  
   IF V_COUNT_ID = 0 THEN MEM_COMY_CD
  
      FOR CONT_LIST IN CUR_CONT_ID LOOP
           INSERT INTO TB_INFO_PACM_11002000
                     ( USER_ID
                     , CONT_ID
                     , REG_NM
                     , REG_DT
                     , CHANG_NM
                     , CHANG_DT
                     )
                VALUES     
                     ( :NEW.USER_ID
                     , CONT_LIST.CONT_ID
                     , :NEW.REG_NM
                     , :NEW.REG_DT
                     , :NEW.CHANG_NM
                     , :NEW.CHANG_DT
                     );
      END LOOP;
     
   END IF;
        
   EXCEPTION WHEN OTHERS THEN
       DBMS_OUTPUT.PUT_LINE('TB_00001100_TRIG_INS_AF_01 EXEC ERROR');
       DBMS_OUTPUT.PUT_LINE('SQL ERROR CODE:' || SQLCODE);
       DBMS_OUTPUT.PUT_LINE('SQL ERROR MESSAGE:' || SQLERRM);                             
END;

by jkson [2017.06.20 15:14:38]

IF V_COUNT_ID = 0 THEN MEM_COMY_CD 와..

SELECT COUNT(*) INTO V_COUNT_CD 에서

에서 V_COUNT_CD , V_COUNT_ID는 정의되지 않았는데

 V_COUNT_CNT 아닌가요?

그리고 IF ~ THEN 다음에 MEM_COMY_CD는 왜 있는 거죠?

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