DB (데이터베이스)/Tibero (티베로)

[TIBERO/ORACLE] 프로시저 작성 예제

뜽배 2022. 2. 22. 15:02
728x90
반응형

1. IN 변수만 있는 프로시저

CREATE OR REPLACE PROCEDURE [프로시저명]

(

      [파라미터 명] IN VARCHAR2,

      [파라미터 명] IN VARCHAR2

)

IS

[변수명] VARCHAR(100);

[변수명] VARCHAR(100);

CURSOR [커서명] IS

    SELECT [컬럼명],[컬렴명],[컬럼명] FROM [테이블 명];

 

BEGIN

    OPEN [커서명];

        LOOP FETCH [커서명]

            INTO [변수 명], [변수 명], [변수 명];

        EXIT WHEN [커서명]%NOTFOUND;

        END LOOP;

    CLOSE [커서명];

 

DBMS_OUTPUT.PUT_LINE('결과값 ::: ' );

END;

 

위는 일반적인(IN 변수 만 있는) 프로시저 작성 예시이다. 

 

위와 같이 프로시저에 IN 변수만 있는 경우 프로시저를 호출 할 때

EXECUTE [프로시저명](변수,변수);

이렇게 사용 할 수 있다.

 

-----------------------------------------------------------------------------------------------------------------------------------

 

2. IN 변수가 없는 프로시저

CREATE OR REPLACE PROCEDURE [프로시저명]

IS

[변수명] VARCHAR(100);

[변수명] VARCHAR(100);

CURSOR [커서명] IS

    SELECT [컬럼명],[컬렴명],[컬럼명] FROM [테이블 명];

 

BEGIN

    OPEN [커서명];

        LOOP FETCH [커서명]

            INTO [변수 명], [변수 명], [변수 명];

        EXIT WHEN [커서명]%NOTFOUND;

        END LOOP;

    CLOSE [커서명];

 

DBMS_OUTPUT.PUT_LINE('결과값 ::: ' );

END;

 

 

만약 프로시저가 변수를 받지 않는다면

EXECUTE [프로시저명](); 

위와 같이 호출 할 수 있다.

 

-----------------------------------------------------------------------------------------------------------------------------------

3. OUT 변수가 있는 프로시저

 

CREATE OR REPLACE PROCEDURE [프로시저명]

(

      [파라미터 명] IN VARCHAR2,

      [파라미터 명] OUT VARCHAR2

)

IS

[변수명] VARCHAR(100);

[변수명] VARCHAR(100);

CURSOR [커서명] IS

    SELECT [컬럼명],[컬렴명],[컬럼명] FROM [테이블 명];

 

BEGIN

    OPEN [커서명];

        LOOP FETCH [커서명]

            INTO [변수 명], [변수 명], [변수 명];

        EXIT WHEN [커서명]%NOTFOUND;

        END LOOP;

    CLOSE [커서명];

 

DBMS_OUTPUT.PUT_LINE('결과값 ::: ' );

END;

 

 OUT변수가 있는 프로시저의 경우

DECLARE

    OUT_VAR VARCHAR(100);

BEGIN

    [프로시저명]('1'OUT_VAR);

    COMMIT;

END;

위와 같이 DECLARE에 OUT변수를 선언 후 프로시저에 OUT변수를 넣어 실행시켜야 한다.

-----------------------------------------------------------------------------------------------------------------------------------

 

4. 프로시저에서 로그 찍기

DBMS_OUTPUT.PUT_LINE('로그찍기' || OUT_VAR);

 

위와 같이 로그를 찍어 확인 할 수 있다.

 

    

728x90
반응형