Oracle
[days14] Stored Procedure (저장 프로시저)
다연
2020. 11. 17. 21:32
반응형
-- empno 7369 smith 사원 삭제하는 저장프로시저 생성
delete from emp
where empno = 7369; --왜 이렇게 안하구 저장프로시저 만들어? 성능, 속도 때문에
create or replace procedure up_delemp
--(
--argument -- ;이 아니라 ,(콤마)
--)매개변수 생략
is --변수 필요 없음
--선언블록
begin
--실행블록
delete from emp
where empno = 7369;
--exception
end;
--Procedure UP_DELEMP이(가) 컴파일되었습니다. (실행된건 아님)
저장 프로시저를 실행하려면 3가지 방법 존재
1. execute 프로시저명
execute up_delemp;
2. 익명프로시저 안에서 실행
--declare
begin up_delemp;
--exception
end;
3. 또다른 저장프로시저 안에서 호출해서 실행
create or replace procedure up_delemp
(--매개변수로 받아 삭제하기
pempno emp.empno%type --파라미터(=매개변수) 선언할땐 크기 붙히지 않음
--자료형 크기를 아예 안붙히던지pempno number
--pempno empemp%type 이렇게 하던지
)
is
begin
delete from emp
where empno = pempno;
--exception
end;
--Procedure UP_DELEMP이(가) 컴파일되었습니다. (아직 실행x)
exec up_delemp(7369);--==execute
--PL/SQL 프로시저가 성공적으로 완료되었습니다.
exec up_delemp(7499);
--PL/SQL 프로시저가 성공적으로 완료되었습니다.
문제
- 7369 사원의 comm값을 얻어와 7499 comm 값으로 설정
- 프로시저명 : up_commchange
create or replace procedure up_commchange
(
p_ori_empno emp.empno%type
,p_tar_empno emp.empno%type
)
is
--새로운 sal을 담을 변수 선언
vcomm emp.comm%type;
begin
select comm into vcomm
from emp
where empno = p_ori_empno;
update emp
set comm = vcomm
where empno = p_tar_empno;
--commit;
--exception rollback;
end;
exec up_commchange(7499, 7369);
반응형