2

パッケージ内のプロシージャの実行中にユーザーにコメントを表示することは可能ですか? 私のパッケージには3つの手順があります。次々と呼びかけています。プロシージャ xyz が実行されている、プロシージャが正常に実行されたなどのコメントをコンソールに表示したい。のような手順内にコメントを追加しましDBMS_OUTPUT.PUT_LINE('PROCEDURE EXECUTED SUCCESSFULLY')たが、うまくいきませんでした。参考までに、Windows 7 システムで oracle 11g を使用しています。

4

1 に答える 1

10

DBMS_OUTPUT実行中のプロシージャに関する情報を表示するために使用することはできません。これは、DBMS_OUTPUT.put_line画面にデータが表示されないためです。データはキューに入れられ、後で呼び出し元のクライアントによって読み取られます(このキューはトランザクションの外部でも表示されません)。SQL*Plusキューを使用する場合は、手順の最後に自動的に読み取られて表示されますSET SERVEROUTPUT ON

実行中にプロシージャの進行状況を追跡するための他の手段が存在します。

  • 代わりにファイルに書き込むことができます。パラメータがtrueに設定されているUTL_FILE.put_line場合、直接書き込みます。autoflush
  • でセッション変数を設定できますDBMS_APPLICATION_INFO。これらの変数は、クエリを実行することで別のセッションで読み取ることができますv$session
  • AUTONOMOUS_TRANSACTIONS専用のテーブルに進捗情報を記録するために使用できます。このテーブルは、別のセッションから同時に照会できます。

ご覧のとおり、情報が書き込まれている間に情報を読み取るには、別のプロセスが必要になります。一部のアプリケーションでは、これは、新しい別のプロセスでメインバッチジョブを実行することによって実現されます。たとえば、呼び出しを行うDBMS_JOBDBMS_SCHEDULER、呼び出しトランザクションが進行状況テーブルまたはファイルでジョブが完了するまでループします。

SQL * Plusは対話型クライアントではないため、この機能を実現するには、より高度な環境が必要になります。

于 2012-09-04T08:54:34.103 に答える