- 주의 사항
1) DEFAULT 파라미터 사용 시 인수 전달에 주의해야 한다.
CREATE OR REPLACE PROCEDURE INST_SALE (P_PRODID NUMBER, P_CUSTID NUMBER, P_TIMEID VARCHAR2 := TO_CHAR(SYSDATE,'YYYYMMDD'), P_CHNNID NUMBER := 3 , P_QTY NUMBER := 1 , P_AMT NUMBER) -- ERROR; , , 자체가 ERROR EXECUTE INST_SALE(100, 100, , , , 100); -- ERROR; 위치 지정 방식이라 P_AMT에 값이 들어가지 않음 EXECUTE INST_SALE(100, 100, 100); -- ERROR; <=가 아니라 => EXECUTE INST_SALE(100, 100, P_AMT <= 100); -- ERROR; 이름 지정 방식을 쓰다가 위치 지정 방식을 쓰면 무조건 에러 EXECUTE INST_SALE(P_PRODID => 33, 1500, 1000); -- GOOD EXECUTE INST_SALE(100, 100 ,P_AMT => 100);
|
2) 파라미터는 절대로 뒤에 데이터 타입의 크기나 정밀도를 지정하지 않는다. 지정 시 에러를 발생 시킨다.
3) 파라미터 OUT 모드에서, 프로시저를 호출 시 OUT되는 값을 받을 변수(공간)가 필요하다. 이를 상수로 넘기게 되면 받을 수 있는 공간이 없기 때문에 에러를 발생 시킨다. 또한 프로시저에서 IN OUT, OUT 모드로 선언된 파라미터에는 DEFAULT를 적용할 수 없다.
CREATE OR REPLACE PROCEDURE proc1( p1 OUT NUMBER) IS BEGIN p1 := 10; END proc1; / -- Error EXECUTE proc1(1); -- Success VARIABLE b1 NUMBER; EXECUTE proc1(p1 => :b1); |
CREATE OR REPLACE PROCEDURE proc1( p1 OUT NUMBER := 1) IS BEGIN p1 := 10; END proc1; / 오류(2,5): PLS-00230: OUT and IN OUT formal parameters may not have default expressions |
'PL SQL' 카테고리의 다른 글
PL/SQL 함수(Function) - 2 (표현식의 일부로 사용되는 함수, SQL문장 함수 사용 제한 사항) (0) | 2016.07.07 |
---|---|
PL/SQL 함수(Function) - 1 (함수 생성, 프로시서 함수의 차이, Syntax) (0) | 2016.07.07 |
PL/SQL 예외 처리 실습 - 사용자 정의 예외, RAISE_APPLICATION_ERROR (0) | 2016.07.07 |
PL/SQL 프로시저(Procedure) - 4 (파라미터 작성 방법, DEFAULT 옵션) (0) | 2016.07.06 |
PL/SQL 프로시저(Procedure) - 3 ( 프로시저 호출 방법 (EXECUTE, ), user_objects와 user_source ) (2) | 2016.07.06 |