■コマンド execute
①OUT引数がない時
execute(またexec) プロシージャ名(引数1,引数2,・・)
②OUT引数がある時
VAR v_out NUMBER;
execute(またexec) プロシージャ名(引数1,引数2,・・ :v_out );
例:
SQL>
SQL> variable v_out NUMBER;
SQL> execute main_proc('引数1', '引数2', :v_out);
SQL> print v_out;
SQL>
[PLS-00201: 識別子V_OUTを宣言してください。]が表示された時、v_out 前に、[:]が付いてるかどうか、確認して下さい。
■SERVEROUTPUT は DBMS_OUTPUT による PL/SQL の標準出力を非表示にするか、出力を許可して任意にバッファサイズを設定する。
•短縮形は SERVEROUT
•デフォルト値 OFF
SET SERVEROUTPUT コマンドの構文
SET SERVEROUTPUT ON [SIZE n]
CREATE OR REPLACE function test_proc return boolean
IS
CURSOR cur_param IS
SELECT DEF_NAME
FROM NAME_DEF_LIST
WHERE NAME_DEF_CD like 'XXXX%';
name_def varchar2(100);
BEGIN
DBMS_OUTPUT.PUT_LINE('test_proc start');
open cur_param;
loop
fetch cur_param into name_def;
exit when cur_param%notfound;
DBMS_OUTPUT.PUT_LINE('>>' || name_def);
end loop;
close cur_param;
DBMS_OUTPUT.PUT_LINE('test_proc end');
return true;
EXCEPTION
WHEN others THEN
DBMS_OUTPUT.PUT_LINE('..error..');
return false;
END;
/
メイン処理:
CREATE OR REPLACE procedure P17GK_V200_MNT_EN.test_main
IS
BEGIN
DBMS_OUTPUT.PUT_LINE('main start');
boolean rtn;
rtn := test_proc();
DBMS_OUTPUT.PUT_LINE('return ' || rtn);
EXCEPTION
WHEN others THEN
DBMS_OUTPUT.PUT_LINE('..error..');
END;
/
0 件のコメント:
コメントを投稿