본문 바로가기

DB

Oracle PL/SQL 프로시저

반응형

 

매개변수 타입 설명
IN 프로시저 안으로 호출 프로그램의 상수 값을 전달하는 매개변수를 선언하며 전달되는 값이 NULL일 경우 기본값(Default)을 설정할 수도 있음
OUT 호출 프로그램으로 프로시저의 결과 값을 전달하는 매개변수 선언
IN OUT 프로시저 안으로 호출 프로그램의 상수 값을 전달하고, 결과 값을 다시 호출 프로그램으로 전달하는 매개변수를 선언

IN 매개변수를 이용하여 입력받을 매개변수를 설정하고 해당 변수 이름으로 프로시저 내에서 사용하면 된다.

IN값에 아무 값도 입력되지 않으면(NULL)기본값 으로 설정된다.

 

OUT매개 변수는 프로시저를 실행하고 반환할 때 사용되는 변수 이름으로 IS절애서 별도의 선언없이 프로시저 내에서 해당 변수에 값을 입력하면 된다.

 

CREATE OR REPLACE PROCEDURE EMP_COUNT 
(P_DEPTNO IN NUMBER DEFAULT 20, -- 입력변수
 O_EMP_COUNT OUT NUMBER) --프로시저 출력 변수
IS
    --커서 선언 
    CURSOR GET_EMP_DATA IS
    SELECT COUNT(*)
    FROM EMP
    WHERE DEPTNO = P_DEPTNO;
    
    I_COUNT NUMBER;
    
BEGIN
    --커서오픈
  OPEN GET_EMP_DATA;
  --커서 FETCH
  FETCH GET_EMP_DATA INTO I_COUNT;
  --출력 변수에 값 입력
  o_emp_count := i_count;
  --커서 close
  CLOSE GET_EMP_DATA;
END EMP_COUNT;

부서번호를 입력받아 부서 인원수를 반환하는 프로시저다, 

P_DEPTNO는 입력 매개변수이므로 IN과 함께 NUMBER 데이터 타입으로 선언하였으며, 이 값이 NULL 이면 기본값인 20으로 설정되도록 했다. 

 

전화 번호르 입력받아 문자를 제외하고 숫자만 리턴되도록 하는 구문이다

CREATE OR REPLACE PROCEDURE REPLACE_PHONE(P_PHONE IN OUT VARCHAR2)
IN
BEGIN
	P_PHONE := REPLACE(P_PHONE,'-');
    END REPLACE_PHONE;

 

반응형