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');