사용자가 임의로 만든 PL/SQL문을 저장해놓고 필요한 경우 호출하여 사용하면 보다 효율적으로 작업을 처리할 수 있다.
오라클은 사용자가 만든 이 임의의 PL/SQL문을 데이터베이스에 저장해두고 필요할때 꺼내 쓸 수 있는 기능을 제공하는데,
이것이 저장 프로시저이다.
create (or replace) procedure 프로시저이름
(매개변수 [in or out]
is
지역변수..?
begin
실행문1
실행문2
end;
/
() 괄호는 꼭 쓰지 않아도 된다. 필요한 경우에만 사용하는데,
이 괄호 안의 매개변수 값에 따라 다른 동작을 수행한다.
매개변수는 [in], [out], [inout] 둘 중 하나를 택하도록 되어 있다. 기본값이 [in] 이므로 [out]과 [inout]일때만 기재한다.
실습용으로 emp의 데이터가 모두 들어있는 복사본 테이블 emp01을 생성했다.
이 emp01의 데이터를 모두 삭제하는 프로시저를 만들어 볼 예정이다.
프로시저 생성 성공
create or replace procedure del_all
is
BEGIN
delete from emp01;
END;
/
프로시저가 잘 생성되었는지 확인해본다.
select*from user_sources;
user_procedures; 가 아니다!
execute 명령어로 실행한다.
execute 또는 exec로 실행 가능하다.
execute del_all;
exec del_all;
emp01을 조회해보면 모든 데이터가 삭제되어 있다.
프로시저 삭제
drop procedure del_all;
지금까지 간단한 프로시저를 생성-삭제해보았는데,
이번에는 매개변수를 가진 프로시저를 생성하여
특정 사원의 이름을 입력하면 그 사원의 데이터를 삭제하는 프로시저를 만들어본다.
create or replace procedure del_ename
(vename in emp01.ename%type) -- in 생략가능
is
BEGIN
delete from emp01 where ename = vename;
END;
/
위의 실행 명령문 그대로 실행하면 오류가 나타난다.
매개변수가 있기 때문에 괄호 안에 해당 사원의 이름을 입력해주어야만 제대로 실행이 된다.
위 에러 화면과는 다르게 완료되었다는 메시지가 나온다.
execute 프로시저이름(매개변수);
execute del_ename('JAMES');
emp01 테이블 목록을 출력해보면 JAMES 사원이 사라져 사원은 13명 뿐이다.
'오라클 데이터베이스' 카테고리의 다른 글
저장 함수 (0) | 2022.08.02 |
---|---|
저장 프로시저 - 매개변수의 IN, OUT, INOUT (0) | 2022.08.01 |
PL / SQL - 반복문 (0) | 2022.08.01 |
PL / SQL (0) | 2022.08.01 |
동의어 Synonym (0) | 2022.07.29 |