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