PL SQL

PL/SQL 프로시저(Procedure) - 2 (파라미터 모드)

n.han 2016. 7. 6. 16:48

2) 파라미터 및 파라미터 모드

  서브 프로그램 뒤에 선언되어, 호출 환경과 서브 프로그램 간에 데이터를 전달하는 것에 사용된다. 로컬 변수처럼 사용되지만, 파라미터 전달 모드에 따라서 달라진다. 

파라미터 모드

설명

IN

서브 프로그램에 제공 (기본값)

OUT

호출자에게 제공

IN OUT

입력 값을 제공, 수정되어 리턴될 수

 

 

3) 프로시저 생성과 파라미터 모드에 따른 비교

  다음은 IN OUT 파라미터를 모두 사용한 예제이다. query_emp 프로시저 안에 두 번째, 세 번째 argument에는 OUT 값을 Return 받을 변수명이 들어가야 한다. 만약 상수가 들어가면 에러가 발생한다.

 

CREATE OR REPLACE PROCEDURE query_emp(
    p_id IN employees.employee_id%TYPE,
    p_name OUT employees.last_name%TYPE,
    p_salary OUT employees.salary%TYPE)
IS
BEGIN
  SELECT last_name,
    salary
  INTO p_name,
    p_salary
  FROM employees
  WHERE employee_id = p_id;
END query_emp;
/
SET SERVEROUTPUT ON
DECLARE
  v_emp_name employees.last_name%TYPE;
  v_emp_sal employees.salary%TYPE;
BEGIN
  query_emp(171, v_emp_name, v_emp_sal);
  DBMS_OUTPUT.PUT_LINE(v_emp_name||' earns '|| TO_CHAR(v_emp_sal, '$999,999.00'));
END;
/