いくつかのレコードを処理している間に、プログラムの進行に合わせて出力を表示したいとします。行を読み込むだけでは助けにならない。ただバッファから取り出しているだけなので、他には何もない。たとえば、次のようにdbms_output.put_line()の代わりに、繰り返しごとに呼び出されるたびに内容を1行ずつ出力する方法がありますか?
DECLARE
CURSOR cEmploee IS SELECT * FROM g_emploees;
iTotal INTEGER := 0;
iCount INTEGER := 0;
BEGIN
SELECT COUNT(*) FROM g_emploees INTO iTotal;
FOR rLine IN cEmploee loop
dbms_output.put_line('Porcessed['||rLine.id||']: '|| ((iCount/iTotal)*100) || '%')
iCount := iCount + 1;
END LOOP;
END;
- 私はDBMS_OUTPUT.GET_LINE()を使用し、だから、答えマーキングを停止することはできません!
- 出力を読み取り専用の理由でファイルにパイプすることはできません!
処理された%を表示し、その行をすべてのITERATIONで処理するために使用することができますが、最後にはバッファ内に残っている一連の行ではありません(DBMSのコマンド/ "dbms_output.put_line"が実行終了時に500行ではなく呼び出された場合、PL/SQLに表示されるすべての正確な時刻を表示する必要があります。コマンドウィンドウONステートメント以下
号はそのようなオプションはありません。プロシージャが完了したときにのみ、出力が表示されます。 –
[OracleのPL/SQLからの出力をフラッシュする方法はありますか?](http://stackoverflow.com/questions/1472587/is-there-any-way-to-flush-output-from-pl) -sql-in-oracle) – user272735
また、[各反復で呼び出されたときにdbms_output.put_lineを1行ずつ出力する方法]の複製です(http://stackoverflow.com/questions/39099366/how-to-make- dbms-output-put-line-to-print-line-by-every-in-it-every-itという名前で作成され、最初のものが複製として閉じられたために作成されたものです。 –