저장 프로시저

 

저장 프로시저란?

오라클은  PL/SQL 문을 데이터베이스에 저장할 수 있도록 저장 프로시저라는 것을 제공한다.

 

저장 프로시저의 필요성

저장 프로시저를 사용하면 복잡한 DML문을 필요할 때마다 다시 입력할 필요 없이 간단하게 호출만 해서 복잡한 DML 문의 실행 결과를 얻을 수 있다.

 

저장 프로시저의 MODE
  • IN : 데이터를 전달 받을때 사용한다.
  • OUT : 수행된 결과를 받아갈 때 사용한다.
  • INOUT : 두 가지 목적에 모두 사용된다.

 

프로시저 호출 시 넘겨준 값을 받아오기 위한 매개 변수는 MODE를 IN으로 지정 해서 선언한다.

프로시저에서 구한 결과 값을 얻어 내기 위해서는 OUT으로 지정한다.

OUT으로 지정한 매개 변수는 반드시 매개 변수에 변수를 지정해야 한다.

 

 

매개변수가 있는 프로시저 사용방법
create or replace procedure sel_empno(
    vempno emp.empno%type,
    vename emp.ename%type,
    vsal emp.sal%type,
    vjob emp.job%type
)
is
begin
    select ename, sal, job into vename,vsal,vjob
    from emp
    where empno=vempno;
end;
/

variable var_ename varchar2(15);
variable var_sal number;
variable var_job varchar2(9);

exec sel_empno(1001)

print var_ename
print var_sal
print var_job

 

저장 프로시저의 작동원리

매번 같으 SQL 문들을 서버에 보내는 대신에 미리 그 정의를 서버에 저장해 두고 클라이언트에서는 단순히 이 프로시저를 적당한 매개 변수와 함께 호출만 해주면된다.

 

 

저장 프로시저의 장점
  • 여러 클라이언트에서 서버에 저장해 둔 SQL 문을 함께 사용할 수 있다.
  • 속도면에서 장점이 있다.
  • SQL문의 네트워크 트래픽도 줄일 수 있다.

 


 

 

저장함수

 

저장 함수는 저장 프로시저와 거의 유사한 용도

다만, 저장함수는 실행결과를 되돌려 받을 수 있다.

create or replace function home_ftest2(
    vempno emp.empno%type
)
return number
is
    vsal emp.sal%type;
begin
    select sal into vsal
    from emp
    where empno = vempno;
    
    return (vsal*3);
end;
/


variable triple_sal number;


exec :triple_sal := home_ftest2(1002);

print triple_sal;

 

 

 

오늘의 tip

 

프로시저는 select에 바로 사용할 수 없다.

(프로시저는sql문에 바로  꽂아서 사용할 수 없다.)

 

select문에서 쓰고 싶으면 함수로 선언하고 만들어야 한다.

 

 

 

 

의문......

조회 하고 나서 어디다 저장 해야 볼 수 있는 걸까????

 

 

'Oracle' 카테고리의 다른 글

[Oracle]시퀀스, MERGE_1115  (0) 2022.11.16
[Oracle]View와 JDBC 드라이버 _ 1108  (1) 2022.11.09
[Oracle]PL/SQL 개요 _ 1107  (0) 2022.11.07
[Oracle]그룹함수_1104  (0) 2022.11.04
[Oracle]Oracle 주요함수_1103  (0) 2022.11.03
복사했습니다!