IF 문을 쓰는 법이 잘 못 된건가요? 0 3 2,338

by Vampirejk [PL/SQL] [2013.07.23 13:50:16]


  안녕하세요 ^^

IF ELSE문을 사용하려고 하는데 아래와 같이 프로시져를 만들었는데요

IF EXPECTING  : INSERT 라는 에러가 나오는데 이유가 뭔가요?

앞에 구문이 있구요

 MERGE INTO m_trouble_info A
    USING DUAL ON (a.tm_no = P_TM_NO AND a.in_no = P_IN_NO AND a.part_cd = P_PART_CD)
    WHEN MATCHED THEN
    UPDATE SET
        tpt_input_date = P_TPT_INPUT_DATE
        ,trouble_status = P_TROUBLE_STATUS
        ,send_location = P_SEND_LOCATION
        ,send_date = P_SEND_DATE
        ,piture_yn=P_PITURE_YN
        ,dc0235 = P_COMMENT
               
    WHEN NOT MATCHED THEN

IF  V_CNT is 1 then
      
        INSERT
        (part_cd, part_nm,trouble_status, send_location,send_date,piture_yn,tm_no,in_no,tpt_input_date,dc0235)
       VALUES 
        (P_PART_CD, P_PART_NM, P_TROUBLE_STATUS, P_SEND_LOCATION,P_SEND_DATE, P_PITURE_YN,P_TM_NO,P_IN_NO,P_TPT_INPUT_DATE,P_COMMENT);  
    
  else
   
         INSERT
        (part_cd, part_nm,trouble_status, send_location,send_date,piture_yn,tm_no,in_no,tpt_input_date,dc0235)
        VALUES 
        (P_PART_CD, P_PART_NM, P_TROUBLE_STATUS, P_SEND_LOCATION,P_SEND_DATE, P_PITURE_YN,P_TM_NO,P_IN_NO,P_TPT_INPUT_DATE,P_COMMENT);
    
    
   
   end if;
by 신이만든짝퉁 [2013.07.23 14:01:15]
V_CNT is 1

이걸 이렇게 바꿔 보세요

V_CNT = 1

by 용근님 [2013.07.23 14:28:52]
머지문에 세미콜론

by 신이만든짝퉁 [2013.07.23 14:49:57]
제가 잘못 이해했네요.
지금 위에 적어주신 쿼리는 문법이 잘못 됐습니다.
이런 식으로 merge 를 조건에 따라 분기시켜 주세요~

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