Oracleデータベース
set serveroutput off; DECLARE v_num INTEGER; BEGIN DBMS_OUTPUT.DISABLE;・・・(3)
DBMS_OUTPUT.ENABLE(20000);・・・(4) DBMS_OUTPUT.PUT_LINE('-- ITEM CHECK --'); SELECT count(*) INTO v_num FROM t1; IF v_num = 0 THEN DBMS_OUTPUT.PUT_LINE('-- NO ITEM --'); ELSE DBMS_OUTPUT.PUT_LINE('-- IN ITEM(' || v_num || ') --'); END IF; END; / set serveroutput on; DECLARE v_buffs DBMSOUTPUT_LINESARRAY;・・・(5) v_num INTEGER := 10; BEGIN DBMS_OUTPUT.GET_LINES(v_buffs, v_num);・・・(5) FOR i IN 1..v_num LOOP DBMS_OUTPUT.PUT_LINE('LOG : ' || v_buffs(i));・・・(5) END LOOP; END; /
Symfoware Server
DO $$ DECLARE v_num INTEGER; BEGIN PERFORM DBMS_OUTPUT.SERVEROUTPUT(FALSE); PERFORM DBMS_OUTPUT.DISABLE();・・・(3) PERFORM DBMS_OUTPUT.ENABLE(20000);・・・(4) PERFORM DBMS_OUTPUT.PUT_LINE('-- ITEM CHECK --'); SELECT count(*) INTO v_num FROM t1; IF v_num = 0 THEN PERFORM DBMS_OUTPUT.PUT_LINE('-- NO ITEM --'); ELSE PERFORM DBMS_OUTPUT.PUT_LINE('-- IN ITEM(' || v_num || ') --'); END IF; END; $$ ; DO $$ DECLARE v_buffs VARCHAR[];・・・(5) v_num INTEGER := 10; BEGIN PERFORM DBMS_OUTPUT.SERVEROUTPUT(TRUE); SELECT lines, numlines INTO v_buffs, v_num FROM DBMS_OUTPUT.GET_LINES(v_num);・・・(5) FOR i IN 1..v_num LOOP PERFORM DBMS_OUTPUT.PUT_LINE('LOG : ' || v_buffs[i]);・・・(5) END LOOP; END; $$ ;
DBMS_OUTPUTパッケージのNEW_LINEと同じです。記述差異および、記述差異に伴う移行手順については、NEW_LINEを参照してください。
DBMS_OUTPUTパッケージのNEW_LINEと同じです。記述差異および、記述差異に伴う移行手順については、NEW_LINEを参照してください。
DBMS_OUTPUT.GET_LINES(第1引数, 第2引数)
取得する値は、引数に指定した変数で受け取ります。
取得する値は、DBMS_OUTPUT.GET_LINESの検索結果なので、SELECT文のINTO句に指定した変数で受け取ります。
以下の手順で移行してください。
“DBMS_OUTPUT.GET_LINES”というキーワードでストアドプロシジャ内を検索し、呼び出し箇所を特定します。
DBMS_OUTPUT.GET_LINESの第1引数に指定している変数(例のv_buffs)のデータ型(例のDBMSOUTPUT_LINESARRAY)をVARCHAR型の配列(例のVARCHAR[])に変更します。
DBMS_OUTPUT.GET_LINESの呼び出し箇所を、SELECT INTO文に置き換えます。
選択リストに、lines, numlinesと記載します。
INTO句に、DBMS_OUTPUT.GET_LINESに設定した第1引数(例のv_buffs)と第2引数を引数(例のv_num)と同じ順番で記載します。
FROM句にDBMS_OUTPUT.GET_LINESを記載します。引数は修正前の第2引数(例のv_num)のみ指定します。
第1引数(例のv_buffs)を参照をしている箇所を洗い出し、PL/pgSQLの配列の参照形式(例のv_buffs[i])に変更します。