Oracleデータベース
set serveroutput on;
DECLARE
v_buff1 VARCHAR2(100);
v_buff2 VARCHAR2(1000);
v_num INTEGER;
BEGIN
v_buff2 := '';
LOOP
DBMS_OUTPUT.GET_LINE(v_buff1, v_num);・・・(6)
EXIT WHEN v_num = 1;
v_buff2 := v_buff2 || v_buff1;
END LOOP;
DBMS_OUTPUT.PUT_LINE(v_buff2);
END;
/
※値を取得する処理のみ記載しています。
Symfoware Server
DO $$
DECLARE
v_buff1 VARCHAR(100);
v_buff2 VARCHAR(1000);
v_num INTEGER;
BEGIN
PERFORM DBMS_OUTPUT.SERVEROUTPUT(TRUE);
v_buff2 := '';
LOOP
SELECT line, status INTO v_buff1, v_num FROM DBMS_OUTPUT.GET_LINE();・・・(6)
EXIT WHEN v_num = 1;
v_buff2 := v_buff2 || v_buff1;
END LOOP;
PERFORM DBMS_OUTPUT.PUT_LINE(v_buff2);
END;
$$
;
※値を取得する処理のみ記載しています。
DBMS_OUTPUT.GET_LINE(第1引数, 第2引数)
取得する値は、引数に指定した変数で受け取ります。
取得する値は、DBMS_OUTPUT.GET_LINEの検索結果なので、SELECT文のINTO句に指定した変数で受け取ります。
以下の手順で移行してください。
“DBMS_OUTPUT.GET_LINE”というキーワードでストアドプロシジャ内を検索し、呼び出し箇所を特定します。
DBMS_OUTPUT.GET_LINEの呼び出し箇所を、SELECT INTO文に置き換えます。
選択リストに、line, statusと記載します。
INTO句に、DBMS_OUTPUT.GET_LINEに設定した第1引数(例のv_buff1)と第2引数(例のv_num)を引数と同じ順番で記載します。
FROM句にDBMS_OUTPUT.GET_LINEを記載します。引数を指定しませんが、括弧は指定します。