오라클 10g

USING 절에서 NULL 값 전달시 주의점(UPDATE 통해서 확인)

무니버 2010. 12. 26. 15:04




SQL 문에서 NULL값 전달은 단순히 NULL값을 문자나 숫자로 생각해도 상관은 없다.


             회사코드    회사이름   사장이름    사원숫자           회사셜명

                TBL_COMPANYINFO - 회사정보테이블

  

위와같은 회사정보 테이블에서 4번 회사의 회사설명 대한 부분을 NULL값으로

바꾸는 쿼리문을 보자.


UPDATE TBL_COMPANYINFO
SET CEXPLAIN =NULL
WHERE CCODE=4


오류없이 잘 처리될 것이다.



그러나 위 과정을 USING절을 사용한 프로시저로 해보자.

아래와같은 오류가 날것이다.


  
CREATE OR REPLACE PROCEDURE PCD_CP_UPDATE
(V_CCODE      IN    TBL_COMPANYINFO.CCODE%TYPE)
   IS
   BEGIN
            EXECUTE IMMEDIATE
             'UPDATE TBL_COMPANYINFO
                         SET CEXPLAIN = :1
             WHERE CCODE ='||V_CCODE
             USING NULL;
   END;




굵은 글자 표시한 부분이 문제이다. USING 절을 사용해서 NULL을 전달시에는

다음과같이 해주어야한다.





<수정된 코드 1>


CREATE OR REPLACE PROCEDURE PCD_CP_UPDATE
(V_CCODE      IN    TBL_COMPANYINFO.CCODE%TYPE)
   IS
   BEGIN
            EXECUTE IMMEDIATE
             'UPDATE TBL_COMPANYINFO
                         SET CEXPLAIN = :1
             WHERE CCODE ='||V_CCODE
             USING TO_NUMBER(NULL);
   END;
  


<수정된 코드2>



CREATE OR REPLACE PROCEDURE PCD_CP_UPDATE
(V_CCODE      IN    TBL_COMPANYINFO.CCODE%TYPE)
   IS
   V_NULL NUMBER

BEGIN
            EXECUTE IMMEDIATE
             'UPDATE TBL_COMPANYINFO
                         SET CEXPLAIN = :1
             WHERE CCODE ='||V_CCODE
             USING V_NULL
   END;



  













'오라클 10g' 카테고리의 다른 글

DBMS_CRYPTO이용 암호화 복호화   (0) 2010.12.26
RETURNING 절 미완료  (0) 2010.12.26
DYNAMIC SQL - 3 [REF CURSOR]   (0) 2010.12.24
DYNAMIC SQL - 2 [동적 INSERT]  (0) 2010.12.23
DYNAMIC SQL - 1  (0) 2010.12.23