더북(TheBook)

매개변수 디폴트 값 설정

프로시저를 실행할 때는 반드시 매개변수의 개수에 맞춰 값을 전달해 실행해야 한다. 만약 매개변수 값을 누락하면 다음과 같이 오류가 발생한다.

입력

    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 매개변수에만 사용할 수 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.