1

私が書いていないストアド プロシージャを使用しています。これは長く、多数の列と結合が含まれています。このプロシージャはカーソルを返します。カーソルは、アプリケーション サーバー (ちなみに .NET) が取得して反復処理します。

SQLPlus と PL/SQL を使用してカーソルをインターセプトしようとしていますが、スクリプトの設定方法を理解するのに苦労しています。これが私がこれまでに持っているものです:

DECLARE
    cur sys_refcursor;
BEGIN
  adv_schema.report_proc('CAL','01-JAN-2011','01-JAN-2012','Y',cur);
  OPEN cur FOR --??????
  LOOP
    FETCH cur INTO column1, column2;
    EXIT WHEN cur%NOTFOUND;
    DBMS_OUTPUT.Put_Line ('First Name: '||column1||' Last Name: '||column2);
  END LOOP;
END;

/

OPEN ステートメントには何を入れますか? これを行う方法について私が見たすべての例は、非常に単純化された例であり、PL/SQLブロックのすぐそこにテーブル「t」が作成され、そのテーブルへのクエリでカーソルが開かれ、ループオーバーされます。複数のテーブルを持つ複雑なクエリに対してプロシージャがカーソルを返す場合はどうでしょうか?

4

2 に答える 2

5

report_procプロシージャがカーソルを返す (つまり、4 番目のパラメーターが として定義されている)と仮定すると、コード内でカーソルを使用するOUT SYS_REFCURSOR必要はありません。OPEN手順はすでに開いています。そこから取得するだけです。

于 2013-09-10T21:04:00.880 に答える