GET_LINE プロシージャー - メッセージ・バッファーから 1 行を取得する
GET_LINE プロシージャーは、メッセージ・バッファーから 1 行のテキストを取得します。 テキストは、行末文字シーケンスによって終えなければなりません。
ヒント: メッセージ・バッファーに行末文字シーケンスを追加するためには、PUT_LINE プロシージャーを使用するか、PUT プロシージャーに対する一連の呼び出しを行った後に NEW_LINE プロシージャーを使用します。
構文
プロシージャー・パラメーター
- line
- メッセージ・バッファーから 1 行のテキストを戻す、タイプ VARCHAR(32672) の出力引数。
- status
- メッセージ・バッファーから 1 行を戻したかどうかを示す、タイプ INTEGER の出力引数。
- 0 は、1 行が戻されたことを示します。
- 1 は、戻された行がないことを示します。
許可
DBMS_OUTPUT モジュールに対する EXECUTE 特権。
例
GET_LINE プロシージャーを使用して、メッセージ・バッファーから 1 行のテキストを取得します。 この例では、proc1 によってメッセージ・バッファーにテキストが 1 行書き込まれます。 proc3 はメッセージ・バッファーからテキストを取得し、それを messages という名前の表に挿入します。 その後 proc2 を実行しますが、メッセージ・バッファーは使用不可なので、メッセージ・バッファーに追加されるテキストはありません。 SELECT ステートメントが実行されると、proc1 によって追加されたテキストだけが戻されます。
CALL DBMS_OUTPUT.ENABLE( NULL )@
CREATE PROCEDURE proc1()
BEGIN
CALL DBMS_OUTPUT.PUT_LINE( 'PROC1 put this line in the message buffer.' );
END@
CREATE PROCEDURE proc2()
BEGIN
CALL DBMS_OUTPUT.PUT_LINE( 'PROC2 put this line in the message buffer.' );
END@
CREATE TABLE messages ( msg VARCHAR(100) )@
CREATE PROCEDURE proc3()
BEGIN
DECLARE line VARCHAR(32672);
DECLARE status INT;
CALL DBMS_OUTPUT.GET_LINE( line, status );
while status = 0 do
INSERT INTO messages VALUES ( line );
CALL DBMS_OUTPUT.GET_LINE( line, status );
end while;
END@
CALL proc1@
CALL proc3@
CALL DBMS_OUTPUT.DISABLE@
CALL proc2@
CALL proc3@
SELECT * FROM messages@
この例では、以下の出力が結果として戻ります。MSG
----------------------------------------------
PROC1 put this line in the message buffer.
1 record(s) selected.
