728x90

저는 오라클을 쓰면서 많은 프로시저(Procedure)를 사용하고 있습니다.

 

최근에는 프로시저가 많이 사용하지 않는 추세이긴 합니다.

왜 많이 쓰이는 않는지에 대한 포스팅은 이후에 진행하도록 하겠습니다.

 

우선 Procedure에 대해서 말씀드리겠습니다.

 

프로시저(Procedure)

특정 작업을 수행하는 PL/SQL BLOCK입니다.

매개 변수 및 반복적으로 사용할 수 있는 BLOCK이라고 생각하시면 됩니다.

생성

위에 예시는 PROCEDURE를 생성하는 간단한 예제입니다.

 

LINE별로 설명을 드리면

 

1 LINE  CREATE OR REPLACE PROCEDURE 프로시저명 (

 - 프로시저명으로 CREATE 한다라고 생각하면 됩니다.

 

2~5 LINE 매개변수 IN/OUT/INOUT 데이터 타입

 - 매개변수를 통해 IN/OUT/INOUT을 통해 입출입을 정해주고, 데이터 타입(VARCHAR2, NUMBER 등)을 정해준다.

 

7 LINE 변수 데이터 타입;

 - 프로시저에 맞게 변수랑 사용할 것들을 적어준다.

 

8 LINE BEGIN

 - 프로시저 시작

 

9~12 LINE 실행되어야 될 내용

 

13 LINE EXCEPTION

 - EXCEPTION이 실행되면 THROW 되는 곳

 

14 LINE WHEN OTHERS THEN

 - OTHERS 예외는, 모든 예외를 포괄하는 예외명이며, 예외 처리의 마지막에 기술해야 한다 아니면 compile error가 된다.

 

15 LINE ROLLBACK;

 - 프로시저 실행된 부분 전체 ROLLBACK

 

17 LINE RETURN

 - 프로시저 전체 RETURN

 

실행

실행은 2가지로 구분이 된다.

 

     1. 파라미터가 없거나, IN 파라미터만 있을 때 실행

         CALL       프로시저명 (파라미터들);

         EXEC      프로시저명 (파라미터들);

         EXECUTE  프로시저명 (파라미터들);

         

         예시)

 

         CALL TESTTESTTEST(1,2,3);

         EXEC TESTTESTTEST(1,2,3);

         EXECUTE TESTTESTTEST(1,2,3);

     2. 프로시저 매개변수가 IN/OUT 두 개 다 존재할 때 실행

       

       위에 예제로 만들어진 IN/OUT 두 개 다 존재할 때의 프로시저를 실행한다고 할 때

       아래오 같이 실행하면 된다.

        

        DECLARE

                     A NUMBER;

       BEGIN

               TESTTESTTEST(1,2,3, A);
        END;

    

반응형

+ Recent posts