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;
/FUJITSU Enterprise Postgres
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])に変更します。