ORACLE2009. 12. 22. 23:35

PL/SQL은 화면에 출력하는 기능이 없으며, 오라클에서 화면에 출력하기 위해 dbms_output 패키지를 제공

*dbms_output 패키지
SQL*Plus 또는 SQL*DBA 에서 디버깅 또는 출력 메시지 그리고 reports를 출력 하기 위한 패키지 이다.

*dbms_ouput 패키지 설치
1. sys로 접속 후 dbmsotpt.sql script를 실행
2. 스크립트 실행이 완료 되면 public 속성의 DBMS_OUTPUT 패키지가 생성 됨. (public 권한으로 누구나 실행가능)

*Exception
Error           Description
-------------------------------
ORU-10027: Buffer overflow 
ORU-10028: Line length overflow

* Rules and Limits
최대 Line Size : 32767 bytes
default buffer Size : 20000 bytes.
최소 Buffer Size : 2000 bytes.
최대 Buffer Size : 무제한


* 패키지에 정의된 프로시저 확인
SQL>DESC dbms_output
PROCEDURE DISABLE
PROCEDURE ENABLE
 인수명                    유형               기본 내부/외부?
 ---------------------- ----------------------- --------- --------
 BUFFER_SIZE                    NUMBER(38)              IN     DEFAULT
PROCEDURE GET_LINE
 인수명                    유형               기본 내부/외부?
 ---------------------- ----------------------- --------- --------
 LINE                           VARCHAR2                OUT
 STATUS                         NUMBER(38)              OUT
PROCEDURE GET_LINES
 인수명                    유형               기본 내부/외부?
 ---------------------- ----------------------- --------- --------
 LINES                          TABLE OF VARCHAR2(32767) OUT
 NUMLINES                       NUMBER(38)              IN/OUT
PROCEDURE GET_LINES
 인수명                    유형               기본 내부/외부?
 ---------------------- ----------------------- --------- --------
 LINES                          DBMSOUTPUT_LINESARRAY   OUT
 NUMLINES                       NUMBER(38)              IN/OUT
PROCEDURE NEW_LINE
PROCEDURE PUT
 인수명                    유형               기본 내부/외부?
 ------------------- ----------------------- --------- --------
 A                              VARCHAR2                IN
PROCEDURE PUT_LINE
 인수명                    유형               기본 내부/외부?
 ---------------------- ----------------------- --------- --------
 A                              VARCHAR2                IN


* dbms_output 패키지의 출력 프로시저를 사용하기 위해 먼저SERVEROUTPUT 의 값을 설정 (default로 OFF로 지정 되어 있음)
SQL> SET SERVEROUTPUT ON 

실습 1)  라인 출력 예제
SQL> BEGIN
  2   DBMS_OUTPUT.PUT_LINE('Hello~ PL/SQL');
  3  END;
  4  /
결과 ==> Hello~ PL/SQL



실습2) 변수 생성 및 값 출력
SQL> DECLARE
  2   vempno number(4);
  3   vename varchar2(20);
  4  BEGIN
  5   SELECT empno, ename INTO vempno, vename
  6   FROM emp
  7   WHERE empno = 7788;
  8   dbms_output.put_line('----- Result -----');
  9   dbms_output.put_line(TO_CHAR(vempno) || ' ' || vename);
 10  END;
 11  /
----- Result -----
7788 SCOTT

PL/SQL 처리가 정상적으로 완료되었습니다.

SQL>
 
이렇게 하면 간단한 출력이 가능한 PL/SQL 예문이 완성됨

** DBMS_OUPUT Package의 프로시저

Subprogram Description

DISABLE Procedure

Disables message output

ENABLE Procedure

Enables message output

GET_LINE Procedure

Retrieves one line from buffer

GET_LINES Procedure

Retrieves an array of lines from buffer

NEW_LINE Procedure

Terminates a line created with PUT

PUT Procedure

Places a line in the buffer

PUT_LINE Procedure

Places partial line in buffer

참고 자료 :
http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14258/d_output.htm

'ORACLE' 카테고리의 다른 글

XP에서 Oracle10g 삭제  (0) 2010.01.09
Oracle Book List Link  (0) 2009.12.23
PL/SQL의 기초  (0) 2009.12.22
Oracle 샘플 스키마 설치  (0) 2009.12.21
SQL Processing Concepts  (0) 2009.12.09
Posted by Tiwaz