DBMS_OUTPUT モジュール

DBMS_OUTPUT モジュールは、メッセージ・バッファーにメッセージを書き込み (複数行のテキスト)、メッセージ・バッファーからメッセージを取得する一連のプロシージャーを提供します。 これらのプロシージャーは、メッセージを標準出力に書き込む必要のあるアプリケーション・デバッグの際に役立ちます。

このモジュールのスキーマは SYSIBMADM です。

DBMS_OUTPUT モジュールには、以下の組み込みルーチン が含まれています。

表 1. DBMS_OUTPUT モジュール内で使用可能な組み込みルーチン
ルーチン名 説明
DISABLE プロシージャー メッセージ・バッファーを使用不可にします。
ENABLE プロシージャー メッセージ・バッファーを使用可能にします。
GET_LINE プロシージャー メッセージ・バッファーから 1 行のテキストを取得します。
GET_LINES プロシージャー メッセージ・バッファーから 1 行以上のテキストを取得し、そのテキストをコレクションに書き込みます。
NEW_LINE プロシージャー メッセージ・バッファーに行末文字シーケンスを書き込みます。
PUT プロシージャー メッセージ・バッファーに行末文字シーケンスを含まないストリングを書き込みます。
PUT_LINE プロシージャー メッセージ・バッファーに行末文字シーケンスを含む 1 行を書き込みます。

このモジュール内のプロシージャーを使用すると、メッセージ・バッファーを処理できます。 標準出力に出力をリダイレクトするには、コマンド行プロセッサー (CLP) コマンド SET SERVEROUTPUT ON を使用します。

DISABLE プロシージャーと ENABLE プロシージャーは、自律型プロシージャー内ではサポートされていません。

自律型プロシージャーとは、呼び出されたときに、元のトランザクションとは独立して、新しいトランザクションの内部で実行されるプロシージャーのことです。

proc1 で PUT プロシージャーと PUT_LINE プロシージャーを使用して、メッセージ・バッファー内に 1 行のテキストを書き込みます。 proc1 を初めて実行する時には、SET SERVEROUTPUT ON が指定されており、メッセージ・バッファー内の行が CLP ウィンドウに表示されます。 proc1 を 2 回目に実行する時には、SET SERVEROUTPUT OFF が指定されており、メッセージ・バッファーから CLP ウィンドウに表示される行はありません。

CREATE PROCEDURE proc1( P1 VARCHAR(10) )
BEGIN
  CALL DBMS_OUTPUT.PUT( 'P1 = ' );
  CALL DBMS_OUTPUT.PUT_LINE( P1 );
END@

SET SERVEROUTPUT ON@

CALL proc1( '10' )@

SET SERVEROUTPUT OFF@

CALL proc1( '20' )@

この例では、結果として以下の出力が得られます。


CALL proc1( '10' )

  Return Status = 0

P1 = 10

SET SERVEROUTPUT OFF
Db20000I  The SET SERVEROUTPUT command completed successfully.

CALL proc1( '20' )

  Return Status = 0