자꾸올려서 죄송합니다ㅠ(MSSQL TO PLSQL 컨버팅 0 4 1,130

by 달콤꼬야 [PL/SQL] [2017.02.27 10:53:04]


IF @V_OVER_YN = 'Y'
BEGIN
	IF @V_RT_YN = 'Y'
	BEGIN
		SET @V_QT_PO = @V_QT_PO + ISNULL(@V_QT_PO, 0) * (CASE WHEN ISNULL(@V_RT_PLUS, 0) = 0 THEN 0 ELSE @V_RT_PLUS / 100 END)
	END
	ELSE
	BEGIN
		SET @V_QT_PO = 9999999999
	END
END

이부분을

BEGIN
  IF V_OVER_YN = 'Y'
  BEGIN
    IF V_RT_YN = 'Y'
      BEGIN
        SET V_QT_PO := V_QT_PO + NVL(V_QT_PO, 0) * (CASE WHEN NVL(V_RT_PLUS, 0) = 0 THEN 0 ELSE V_RT_PLUS / 100 END);
      END;
      ELSE
      BEGIN
        SET V_QT_PO := 9999999999;
      END;
  END;
END;

로 수정했는데

 

SET함수를 빼야하는지 세미콜론은 맞게 들어갅건지 모르겠습니다.

 

첫번째 IF문과 두번째 IF문 사이의 BEGIN에 빨간줄이 쳐져있습니다ㅠㅠ

by jkson [2017.02.27 10:59:12]

기초 문법을 모르시는 상태에서 계속 만드시려고 해봤자 실수만 반복하실 수밖에 없을 것 같아요.

기초 문법 한번 쭉 훓어보시고

http://www.gurubee.net/oracle/plsql

아까 링크해드린 레퍼런스도 한번 보시구요~

IF V_OVER_YN = 'Y' THEN
   IF V_RT_YN = 'Y' THEN
      V_QT_PO := V_QT_PO + NVL(V_QT_PO, 0) * (CASE WHEN NVL(V_RT_PLUS, 0) = 0 THEN 0 ELSE V_RT_PLUS / 100 END);
   ELSE
      V_QT_PO := 9999999999;
   END IF;
END IF;

 


by 달콤꼬야 [2017.02.27 11:02:10]

맞아요ㅠㅠ감사합니다ㅠㅠ

신입인데 회사에서 MSSQL만 쓰다가 급하게 ORACLE로 변경해야할 일이 생겨서요ㅠㅠ

이런일 대비해서 이작업끝나면 오라클부터 파야겠어요ㅠㅠㅠ


by 마농 [2017.02.27 11:05:48]

1. NVL 을 매 수식마다 사용하는데..
  - 실제로 널이 가능한지 확인 필요합니다.
  - 널이 들어올 가능성이 없다면 과감하게 NVL 빼시구요.
  - 널이 가능하다면? 수식에서 NVL 하기보다는 미리 NVL 하는게 좋을 듯 하네요.
2. CASE 를 사용했으나?
  - 불필요한 구문이네요.

v_qt_po   := NVL(v_qt_po  , 0);
v_rt_plus := NVL(v_rt_plus, 0);

IF v_over_yn = 'Y' THEN
    IF v_rt_yn = 'Y' THEN
        v_qt_po := v_qt_po + v_qt_po * v_rt_plus / 100;
    ELSE
        v_qt_po := 9999999999;
    END IF;
END IF;

 


by 달콤꼬야 [2017.02.27 11:22:52]

오 잘읽었습니다. 감사합니다~~!!!!

열공할게요ㅠㅠ

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