DBMS_OUTPUT

개요

DBMS_OUTPUT은 메시지를 버퍼에 저장하고 버퍼로부터 메시지를 읽어오기 위한 인터페이스를 제공하는 패키지이다.이다.

함수 / 프로시저
반환 타입
설명

DISABLE

n/a

할당된 메시지 버퍼를 제거하고, DBMS_OUTPUT 패키지 내의 다른 프로시저를 사용할 수 없게 하는 프로시저이다.

ENABLE(buffer_size)

n/a

지정된 크기의 메시지 버퍼를 할당하고 DBMS_OUTPUT 패키지 내의 다른 프로시저를 사용할 수 있게 하는 프로시저이다.

GET_LINE(line OUT, status OUT)

n/a

메시지 버퍼로부터 하나의 라인 메시지를 읽어오는 프로시저이다.

GET_LINES(lines OUT, numlines IN OUT)

n/a

메시지 버퍼로부터 지정된 수만큼, 한 번에 여러 라인의 메시지를 읽어오는 프로시저이다.

NEW_LINE

n/a

메시지 버퍼에 EOL 문자를 저장하는 프로시저이다.

PUT(item)

n/a

메시지 버퍼에 메시지를 저장하는 프로시저이다. 하나의 라인을 여러 번에 걸쳐 저장한다.

PUT_LINE(item)

n/a

메시지 버퍼에 메시지를 저장하는 프로시저이다. 버퍼에 저장되는 메시지의 마지막 라인 끝에 EOL 문자를 첨부한다.


권한

설치는 super user에 이루어져야 하고 public으로 공개되어 있다.


구성

본 절에서는 DBMS_OUTPUT 패키지에서 제공하는 프로시저와 함수를 알파벳 순으로 설명한다.

DISABLE

할당된 메시지 버퍼를 제거하고, DBMS_OUTPUT 패키지 내의 다른 프로시저를 사용할 수 없게 하는 프로시저이다. 이 프로서지를 실행하면 메시지 버퍼에 남아있는 모든 메시지가 함께 제거된다.

프로토타입

DBMS_OUTPUT.DISABLE();

예제

CALL DBMS_OUTPUT.DISABLE();

ENABLE

지정된 크기의 메시지 버퍼를 할당하고 DBMS_OUTPUT 패키지 내의 다른 프로시저를 사용할 수 있게 하는 프로시저이다. 이 프로시저를 여러 번 호출하면 가장 크게 지정한 크기로 메시지 버퍼를 할당한다.

프로토타입

DBMS_OUTPUT.ENABLE 
(
    buffer_size IN INTEGER DEFAULT 20000
);

파라미터

파라미터
설명

buffer_size

할당할 메시지 버퍼의 크기이다. (단위: Byte)

예제

CALL DBMS_OUTPUT.ENABLE(32768);

GET_LINE, GET_LINES

메시지 버퍼로부터 라인 단위로 메시지를 읽어오는 프로시저이다. 이 프로시저는 라인 단위로 메시지를 읽으며, 하나의 라인을 형성하지 않은 메시지는 읽지 않는다.

GET_LINE 또는 GET_LINES 프로시저를 호출한 후에 PUT 또는 PUT_LINE 프로시저를 호출하면, 현재까지 메시지 버퍼에 남아 있던 메시지는 모두 제거된다.

한 라인의 메시지는 최대 255bytes의 크기를 가지므로, 출력 파라미터의 크기를 충분하게 설정해야 한다.

프로토타입

  • GET_LINE GET_LINE 프로시저는 한 번 호출될 때마다 하나의 라인만을 읽어온다.

DBMS_OUTPUT.GET_LINE 
(
    line   OUT TEXT, 
    status OUT INTEGER
);
  • GET_LINES GET_LINES 프로시저는 지정된 수만큼, 한 번에 여러 라인의 메시지를 읽어온다. 이때 메시지 버퍼로부터 실제로 읽어온 메시지 라인의 수를 반환한다. 만약 메시지 버퍼 내에 충분한 수의 메시지 라인이 없어서 지정된 수 만큼의 메시지 라인을 가져오지 못하면, 가져온 메시지 라인의 수 만큼만 저장된다.

DBMS_OUTPUT.GET_LINES 
(
    lines    OUT    TEXT[], 
    numlines IN OUT INTEGER
);

파라미터

파라미터
설명

line, lines

메시지 버퍼로부터 읽어 온 한 라인 또는 여러 라인의 메시지이다.

status

메시지를 성공적으로 읽어 온 경우에는 0을 반환한다.메시지를 성공적으로 읽어 오지 못한 경우에는 1을 반환한다.

numlines

읽어 올 메시지 라인의 수를 입력하고, 실제로 읽어 온 메시지 라인의 수를 출력한다.

예제

  • GET_LINE

DO $$
DECLARE
    buff	TEXT;
    stts	INTEGER;
BEGIN
    CALL DBMS_OUTPUT.PUT_LINE ('ORAFCE TEST 1');
    CALL DBMS_OUTPUT.GET_LINE(buff, stts);
END;
$$;
  • GET_LINES

DO $$
DECLARE
    buff_arr    TEXT[];
    stts	    INTEGER := 10;
BEGIN
    CALL DBMS_OUTPUT.PUT_LINE ('ORAFCE TEST 1');
    CALL DBMS_OUTPUT.PUT_LINE ('ORAFCE TEST 2');
    CALL DBMS_OUTPUT.PUT_LINE ('ORAFCE TEST 3');
    CALL DBMS_OUTPUT.GET_LINES(buff_arr, stts);
    END;
$$;

NEW_LINE

메시지 버퍼에 EOL 문자를 저장하는 프로시저이다.

PUT 프로시저로 메시지를 저장한 경우 EOL 문자가 없으므로 라인 단위로 메시지를 읽는 GET_LINE, GET_LINES 프로시저로 문자열을 읽어 올 수 없다. 단, NEW_LINE 프로시저를 사용하면 GET_LINE, GET_LINES 프로시저로 문자열을 읽어 올 수 있다.

프로토타입

DBMS_OUTPUT.NEW_LINE();

예제

CALL DBMS_OUTPUT.NEW_LINE();

PUT, PUT_LINE

메시지 버퍼에 메시지를 저장하는 프로시저이다.

프로토타입

  • PUT PUT 프로시저는 하나의 라인을 여러 번에 걸쳐 저장할 수 있다. 버퍼에 저장되는 메시지의 마지막 라인 끝에 EOL 문자가 첨부되지 않는다.

DBMS_OUTPUT.PUT
(
    data IN NUMERIC
);
DBMS_OUTPUT.PUT
(
   data IN TEXT
);
  • PUT_LINE PUT_LINE 프로시저는 PUT 프로시저와는 반대로 버퍼에 저장되는 메시지의 마지막 라인 끝에 EOL 문자를 첨부한다. 만약 EOL 문자만을 저장하려면 NEW_LINE 프로시저를 호출한다.

DBMS_OUTPUT.PUT_LINE
(
   data IN NUMERIC
);
DBMS_OUTPUT.PUT_LINE
(
   data IN TEXT
);

파라미터

파라미터
설명

data

메시지 버퍼에 저장할 메시지 데이터이다.

예제

CALL DBMS_OUTPUT.PUT('PUT_EXAMPLE');
CALL DBMS_OUTPUT.PUT_LINE('TIBERO');