0

手順では、DB内のいくつかのデータを使用してクエリ(selectの和集合)を作成することから始めます。次に、クエリの結果をファイルに入れたいのですが、作成したクエリを使用 execute immediateまたはdbms_sql.executeフォローしようとしても、何も起こりませんでした。

だから私は、そのようなクエリをどのように実行するのか疑問に思いましたか?

ありがとう

4

2 に答える 2

2
SET SERVEROUTPUT ON;
SPOOL TEST.TXT

DECLARE
   test_cur   SYS_REFCURSOR;
   v_date     DATE;
BEGIN
   OPEN test_cur FOR 'SELECT SYSDATE FROM DUAL';

   FETCH test_cur INTO   v_date;

   CLOSE test_cur;

   DBMS_OUTPUT.put_line ('DATE IS ' || v_date);
END;

SPOOL OFF

DATE IS 11-DEC-12
PL/SQL procedure successfully completed.

またはPLSQLブロックなしで直接

SET SERVEROUTPUT ON;
SPOOL TEST.TXT
SELECT SYSDATE FROM DUAL;
SPOOL OFF

SYSDATE  
---------
11-DEC-12
1 row selected.

編集

SET SERVEROUTPUT ON;
SPOOL TEST.TXT

DECLARE
  CURSOR  test_cur   
   IS SELECT * FROM XYZ;
BEGIN
   FOR v_test_row IN test_cur;
   LOOP
    DBMS_OUTPUT.put_line ('XXXYYYY ' || v_test_row .<your column name>);
   END LOOP;

END;

SPOOL OFF
于 2012-12-11T10:39:17.180 に答える
1

SQL * Plusなどのクライアントからクエリを実行する場合、バックグラウンドでクライアントプログラムがカーソルを開き、各行のフェッチをループすることを忘れがちです。PL / SQLでは、同じことを行う必要があります。

  • カーソルを開く(開く)
  • ループ
    • 行を変数にフェッチします
    • 行がなくなったら終了します
    • 変数で何でもします
  • ループ終了
于 2012-12-11T10:23:43.363 に答える