0

次のような長い一連の呼び出しがあります。

DBMS_OUTPUT.put_line(v_1||','||v_2);

データベースへの特権のみを読み取り、上記のステートメントからの出力を、後で読み取る可能性のあるすべてのコンピューターの共通の場所に書き込みます (VBA を使用)。

Oracle がサポートしているように見えるUTL_FILEパッケージを見つけましたが、それをどうやってやりたいのか理解できません。

メソッドとパッケージを組み合わせて使用​​して、コンピューターのデスクトップなどの一般的な場所に書き込むput_line方法の簡単な例を教えてもらえますか?UTL_FILE

4

1 に答える 1

1

スプーリングは、UTL_FILE データベース パッケージを呼び出さずにデスクトップで実行できる SQL*Plus 機能です。Toad (SQL*Plus 機能を利用) もこれを行うことができます。

Justin Cave がコメントしたように、UTL_FILE はデータベース サーバーへの読み書きを目的とした Oracle データベース パッケージです (例: 11g ドキュメントhttp://docs.oracle.com/cd/B28359_01/appdev.111/b28419/u_file.htm#BABGGEDF ) 。 .

SQL*Plus のスプーリングについては、こちらに記載されています (Oracle 11g データベースhttp://docs.oracle.com/cd/E11882_01/server.112/e27507/sqlplus.htm#DFSUG144セクション 3.1.7に関連付けられています)。

次のように、TOAD で「スクリプトとして実行」を選択できます。

set serveroutput on
spool c:\temp.lst
begin
  dbms_output.put_line('My text');
end;
/
spool off

スプーリングはクライアント側の機能 (SQL*Plus) であるため、プロシージャ (以下では my_procedure と呼びます) 内で dbms_output を呼び出したい場合は、プロシージャを駆動する SQL スクリプトを作成するだけです。

これを sql スクリプトの内容にすることができます (例: test_dbms_output.sql):

SET serveroutput ON
spool c:\temp.lst
BEGIN
  my_procedure(params);
END;
/
spool OFF

次に、このスクリプトを SQL*Plus 実行コマンド (Toad では「スクリプトとして実行」) で呼び出すことができます。

@test_dbms_output.sql;

また

run test_dbms_output.sql;
于 2014-08-13T20:18:33.430 に答える