私はUNIXスクリプトを使用して、データベースリンク経由でストアドプロシージャを起動するSQLコードを実行しています。私は正常に完了するための手順を得ることができますが、DBMS出力のどれもが示されたSPOOLファイルにスプールされません。 UNIX内データベースリンク経由で実行されるストアドプロシージャからどのようにスプールしますか?
SQL:
set feedback off;
set linesize 500;
set serveroutput on size 1000000;
set serveroutput on format wrapped;
spool $SQLspool;
whenever oserror exit;
whenever sqlerror exit sql.sqlcode;
DECLARE
retcode integer :=0;
BEGIN
[email protected];
dbms_output.put_line('');
dbms_output.put_line('return code: ' || retcode);
dbms_output.put_line('');
EXCEPTION
WHEN OTHERS THEN
RAISE;
END;
/
EXIT;
SPOOLFILEのCONTENTS:
return code: 0
私は、ストアドプロシージャ内DMBS出力の束を一覧表示
が、何もスプールファイルに書き込まれます。
どうすればスプールファイルに出力できますか?
私はOUT変数を持っているしようとしたが、手続きはパラメータを使用して、それがエラーアウトそれがDBリンクを通過しているので、COMMITを含んでいるので...
SQL * PLUSで[email protected]の出力が表示され、スプール・ファイルに書き込まれません。または単に出力が表示されないのですか? –
プロシージャに「dbms_output.disable」コールがないことをチェックしましたか? –
@ Shannon Severance:私が得ている唯一のdbms出力は、 "return code:0"というUNIXスクリプトからです。出力はストアドプロシージャから示されたスプールファイルに格納されません。 @ A.B.Cade:プロシージャ内にそのような呼び出しはありません。ストアドプロシージャは、ループが10k行ごとにコミットされる単純なdelete文です。 – user1174390