오라클 데이터베이스
저장 프로시저 - 매개변수의 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분이 걸렸다... 정말 별 거 아닌건데 ^_ㅠ
결과