매개변수 디폴트 값 설정
프로시저를 실행할 때는 반드시 매개변수의 개수에 맞춰 값을 전달해 실행해야 한다. 만약 매개변수 값을 누락하면 다음과 같이 오류가 발생한다.
입력
EXECUTE my_new_job_proc ('SM_JOB1', 'Sample JOB1');
결과
ORA-06550: 줄 1, 열7:PLS-00306: 'MY_NEW_JOB_PROC' 호출 시 인수의 개수나 유형이 잘못되었습니다.
그런데 프로시저의 매개변수에 디폴트 값을 설정하면 실행할 때 해당 매개변수를 전달하지 않더라도 오류가 나지 않고 디폴트로 설정한 값이 해당 매개변수에 적용된다. my_new_job_proc 프로시저의 최소, 최대 급여의 디폴트 값을 각각 10과 100으로 값을 설정해 보자.
입력
CREATE OR REPLACE PROCEDURE my_new_job_proc
( p_job_id IN JOBS.JOB_ID%TYPE,
p_job_title IN JOBS.JOB_TITLE%TYPE,
p_min_sal IN JOBS.MIN_SALARY%TYPE := 10, -- 디폴트 값 설정
p_max_sal IN JOBS.MAX_SALARY%TYPE := 100 ) -- 디폴트 값 설정
IS
...
...
결과
PROCEDURE MY_NEW_JOB_PROC이(가) 컴파일되었습니다.
이제 job_id와 job_title 값만 전달해 프로시저를 실행해 보자.
입력
EXECUTE my_new_job_proc ('SM_JOB1', 'Sample JOB1');
SELECT *
FROM jobs
WHERE job_id = 'SM_JOB1';
결과
JOB_ID JOB_TITLE MIN_SALARY MAX_SALARY CREATE_DATE UPDATE_DATE
-------- ------------- ---------- ---------- ------------------- -------------------
SM_JOB1 Sample JOB1 10 100 2015/03/12 15:31:49 2015/03/12 17:08:13
최소, 최대 급여 매개변수를 전달하지 않았어도 디폴트 값을 설정하면 이 값이 매개변수에 할당되어 처리되었음을 알 수 있다. 한 가지 주의할 점은 디폴트 값은 IN 매개변수에만 사용할 수 있다.