[oracle] 프로시저(procedure) :: 개발/일상_Mr.lee

[oracle] 프로시저(procedure)

Posted by Mr.mandu.
2016. 5. 30. 08:30 개발/DB

안녕하세요.


오늘은 오라클 프로시져 생성 및 실행을 포스팅 해보겠습니다.


프로시저는 로직을 수행만 할 수 있습니다. 반환값이 없습니다!

사실...프로시저 만들때 그냥 가져다가 알맹이만 바꿨지 제대로 해본적이 없어서

혼자 책보면서 만들어 봤습니다. 


책을 보면서해도... 헷갈리고 만들어 놨던 프로시저를 변경 할려고해도 굉장히 헷갈리네요 


먼저 가장 기초적인 프로시저를 만들고 콘솔로 출력해보겠습니다.


create or replace procedure testdb.testprocedure

is

   begin

    dbms_output.put_line('테스트 프로시져 입니다.');

 end testprocedure;


생성하고 실행을 합니다.

실행 방법은 exec testprocedure; 입니다. exec 명령어를 사용하시면 됩니다.


결과 화면을 보시면 로그를 찍은것을 확인 할 수 있습니다.



그럼 이번엔 프로시저를 이용하여 update 구문을 실행 해 보겠습니다.

먼저 update 구문을 실행하는 프로시저를 생성해보겠습니다.



먼저 기존의 테이블을 확인해보겠습니다.



여기서 deptno를 입력받아 dname을 변경하는 프로시저를 생성해보겠습니다.


create or replace procedure testprocedure01

(

v_deptno in number

)

is


v_dname varchar2(300);


   begin


    update dept

    set

    dname = 'changedname'

   where deptno = v_deptno;

    dbms_output.put_line('테스트 프로시져 입니다.01');


    select

    dname into v_dname

    from dept

    where deptno = v_deptno;

     dbms_output.put_line('결과::'|| v_dname);


end testprocedure01;



테이블 명 아래 

(

v_deptno in number

)

'v_deptno in number' 라는 구문은 매개변수로 number 타입의 변수를 받겠다는 의미 입니다.


in 말고도 out 구문이 있는데... 요건 제가 공부해서 다시 포스팅 해야겠습니다.


그런다음 저는 결과를 출력하기 위해 v_dname 이라는 변수를 선언 하였습니다.


매개변수로 입력받은 값을 이용하여 dept 테이블을 update 합니다.


그리고 결과를 확인하기 위해 select를 해서 다시 출력합니다.


프로시저를 실행 시켜 보면

-->exec testprocedure01(50);



테이블이 변경된 모습을 확인 해 보겠습니다.



보시면 deptno가 50인 행의 dname이 변경된 모습을 확인 할 수 있습니다.


다시한번 말씀드리고 싶은점은

프로시저는 로직을 수행만! 합니다.

함수는 로직 수행 수 값을 반환합니다.


그럼 이만 포스팅을 마치겠습니다.