오라클 데이터베이스

저장 프로시저 - 매개변수의 IN, OUT, INOUT

Kiwisae 2022. 8. 1. 16:10

IN 

매개변수로 값을 받는다 --> 기본값! 생략 가능하다.

OUT

매개변수로 값을 돌려준다.

INOUT

두가지 목적에 모두 사용된다.

바인드 변수

프로시저를 실행했을 때 결과를 저장할 변수

 

 

 

 

사원번호를 매개변수로 전달 받아 그 사원의 이름, 급여, 직책을 구하는 프로시저를 생성해본다.

 

 

1) 프로시저 생성

create or replace procedure sal_empno
    (vempno in emp.empno%type,
    vename out emp.ename%type,
    vsal out emp.sal%type,
    vjob out emp.job%type)
is
BEGIN
    select ename, sal, job into vename, vsal, vjob from emp
    where empno = vempno;
END;
/

 

 

 

2) 바인드 변수를 생성한다.

사원번호를 입력하면 (in)

사원명, 급여, 직급(out) 3개 정보를 출력해야 하니 바인드 변수도 3개를 생성한다.

variable var_ename varchar2(12);
variable var_sal number;
variable var_job varchar2(10);

 

 

 

3) 프로시저를 실행한다.

이 때, 바인드 변수를 넣는 형식이 정해져 있다.

 

바인드 변수는 :바인드변수명 형식으로 적어야 한다.

execute sal_empno(7788, :var_ename, :var_sal, :var_job);

 

 

 

 

4) 매개변수로 가져와 바인드 변수에 저장한 값을 출력해본다.

print var_ename;
print var_sal;
print var_job;

 

 

자꾸 오류 메시지만 떠서 대체 뭐가 잘못 됐나 알 수가 없었는데,

처음 프로시저 생성시 where 조건절에 내가 입력할 매개변수가 사원번호인데, 사원명이라고 입력을 해놓아서 계속 오류가 났었고 이걸 찾느라 40분이 걸렸다... 정말 별 거 아닌건데 ^_ㅠ

 

 

 

결과