다연이네

[days14] Stored Procedure (저장 프로시저) 본문

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);
반응형

'Oracle' 카테고리의 다른 글

[days15] 저장 프로시저의 파라미터 in, out, in out  (0) 2020.11.18
[days15] 저장 프로시저 예제  (0) 2020.11.18
[days14] Cursor (커서)  (0) 2020.11.17
[days14] PL/SQL 예제  (0) 2020.11.17
[days13] PL/SQL, 익명 프로시저  (0) 2020.11.16
Comments