DBMS_OUTPUT
DBMS_OUTPUT 패키지의 기본 개념과 패키지 내의 프러시저를 사용하는 방법을 설명합니다.
개요
DBMS_OUTPUT은 메시지를 버퍼에 저장하고 버퍼로부터 메시지를 읽어오기 위한 인터페이스를 제공하 는 패키지입니다. 하나의 프러시저, 함수, 트리거 등에 의해 저장된 메시지는 다른 프러시저, 함수, 트리거 등에서 읽어올 수 있습니다.
DBMS_OUTPUT 패키지 내의 ENABLE 프러시저를 실행하여 메시지를 주고받기 위한 버퍼를 지정된 크기로 할당합니다. 만약 메시지를 지정된 버퍼 크기 이상으로 저장하려고 하면 예외 상황이 발생합니다.
할당된 버퍼는 DISABLE 프러시저를 실행하여 제거할 수 있으며, 다시 ENABLE 프러시저를 실행하기 전에는 GET_LINE 및 GET_LINES 또는 PUT 및 PUT_LINE, NEW_LINE 프러시저를 호출해도 무시됩니다. 버퍼 내의 메시지는 여러 라인으로 구성되어 있으며, 라인마다 라인 끝(End of Line, 이하 EOL) 문자로 끝납니다.
PUT_LINE 프러시저를 통해 버퍼에 저장된 메시지는 GET_LINE이나 GET_LINES 프러시저를 실행하여 읽어올 수 있습니다.
다음은 DBMS_OUTPUT 패키지 내에 정의된 타입입니다.
CHARARR
메시지 버퍼에서 읽어온 내용을 저장하기 위한 공간입니다.
TYPE CHARARR IS TABLE OF VARCHAR2(32767)프러시저
본 절에서는 DBMS_OUTPUT 패키지에서 제공하는 프러시저를 알파벳 순으로 설명합니다.
DISABLE
할당된 메시지 버퍼를 제거하고, DBMS_OUTPUT 패키지 내의 다른 프러시저를 사용할 수 없게 하는 프 러시저입니다. 이 프로서지를 실행하면 메시지 버퍼에 남아있는 모든 메시지가 함께 제거됩니다.
DISABLE 프러시저의 세부 내용은 다음과 같습니다.
프로토타입
DBMS_OUTPUT.DISABLE;
예제
ENABLE
지정된 크기의 메시지 버퍼를 할당하고 DBMS_OUTPUT 패키지 내의 다른 프러시저를 사용할 수 있게 하는 프러시저입니다. 이 프러시저를 여러 번 호출하면 가장 크게 지정한 크기로 메시지 버퍼를 할당합니다. 이 때 메시지 버퍼의 크기는 최소 2KB, 최대 1MB입니다.
ENABLE 프러시저의 세부 내용은 다음과 같습니다.
프로토타입
파라미터
buffer_size
할당할 메시지 버퍼의 크기 (단위: Byte)
예제
GET_LINE, GET_LINES
메시지 버퍼로부터 라인 단위로 메시지를 읽어오는 프러시저입니다. 이 프러시저는 라인 단위로 메시지를 읽으며, 하나의 라인을 형성하지 않은 메시지는 읽지 않습니다.
GET_LINE 또는 GET_LINES 프러시저를 호출한 후에 PUT 또는 PUT_LINE 프러시저를 호출하면, 현재 까지 메시지 버퍼에 남아 있던 메시지는 모두 제거됩니다.
한 라인의 메시지는 최대 255bytes의 크기를 가지므로, 출력 파라미터의 크기를 충분하게 설정해야 합니다.
GET_LINE, GET_LINES 프러시저의 세부 내용은 다음과 같습니다.
프로토타입
– GET_LINE
GET_LINE 프러시저는 한 번 호출될 때마다 하나의 라인만을 읽어옵니다.
– GET_LINES
GET_LINES 프러시저는 지정된 수만큼, 한 번에 여러 라인의 메시지를 읽어옵니다. 이때 메시지 버퍼 로부터 실제로 읽어온 메시지 라인의 수를 반환합니다. 만약 메시지 버퍼 내에 충분한 수의 메시지 라인이 없어서 지정된 수만큼의 메시지 라인을 가져오지 못하면, 가져온 메시지 라인의 수만큼만 저장됩니다.
파라미터
line, lines
메시지 버퍼로부터 읽어 온 한 라인 또는 여러 라인의 메시지
status
메시지를 성공적으로 읽어 온 경우에는 0을 반환
메시지를 성공적으로 읽어 오지 못한 경우에는 1을 반환
numlines
읽어 올 메시지 라인의 수를 입력하고, 실제로 읽어 온 메시지 라인의 수를 출력
예제
– GET_LINE
– GET_LINES
NEW_LINE
메시지 버퍼에 EOL 문자를 저장하는 프러시저입니다.
PUT 프러시저로 메시지를 저장한 경우 EOL 문자가 없으므로 라인 단위로 메시지를 읽는 GET_LINE, GET_LINES 프러시저로 문자열을 읽어 올 수 없습니다. 단, NEW_LINE 프러시저를 사용하면 GET_LINE, GET_LINES 프러시저로 문자열을 읽어 올 수 있습니다.
NEW_LINE 프러시저의 세부 내용은 다음과 같습니다.
프로토타입
예제
PUT, PUT_LINE
메시지 버퍼에 메시지를 저장하는 프러시저입니다.
PUT, PUT_LINE 프러시저의 세부 내용은 다음과 같습니다.
프로토타입
– PUT
PUT 프러시저는 하나의 라인을 여러 번에 걸쳐 저장할 수 있습니다. 버퍼에 저장되는 메시지의 마지막 라인 끝에 EOL 문자가 첨부되지 않습니다.
– PUT_LINE
PUT_LINE 프러시저는 PUT 프러시저와는 반대로 버퍼에 저장되는 메시지의 마지막 라인 끝에 EOL 문자를 첨부합니다. 만약 EOL 문자만을 저장하려면 NEW_LINE 프러시저를 호출합니다.
파라미터
입력 값으로 주어진 파라미터의 데이터 타입은 NUMBER, VARCHAR, DATE 세 가지이며, 메시지로 저장되기 전에 항상 VARCHAR 타입으로 변환됩니다. NUMBER와 DATE 타입의 데이터는 TO_CHAR 함수를 적용하여 반환된 결과로 저장됩니다.
item
메시지 버퍼에 저장할 메시지 데이터
예외 상황
BUF_OVERFLOW
메시지 버퍼의 최댓값을 초과한 경우
예제
Last updated

