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 |