2

いくつかの in パラメータと REF CURSOR out パラメータを持つパッケージ プロシージャを実行しようとしていますが、TORA (私の SQL IDE)でそれを理解できないようです。

これは、実行してカーソルを表示したい手順の不自然な例です。

PROCEDURE get_peeps_in_city ( pi_city IN varchar(100), po_recordset OUT REF CURSOR )
    IS
    BEGIN
         OPEN po_recordset
         FOR Select Id, 
                FName, 
                LName
             FROM People
             WHERE City like '%' || pi_city || '%'
    END;

これが私がこれまでに試したことです:

DECLARE
    v_cursor REF CURSOR;
BEGIN
    execute PKG_PEEPS.get_peeps_in_city('Chicago', v_cursor);
END

私が得るエラーは、次のようなものです。

PLS-00103: 次のいずれかを予期しているときに、記号"END"が検出されました: begin function package pragma procedure subtype type use form current cursor

4

1 に答える 1

3

あなたはおそらく次のようなものを探しています:

DECLARE
    v_cursor SYS_REFCURSOR;
    v_Id NUMBER;
    v_FName VARCHAR2(200);
    v_LName VARCHAR2(200);
BEGIN
    PKG_PEEPS.get_peeps_in_city('Chicago', v_cursor);

    LOOP
      FETCH v_cursor INTO v_Id, v_FName, v_LName;
      EXIT WHEN v_cursor%NOTFOUND;
        -- do something with v_Id, v_FName, v_LName
    END LOOP;
    CLOSE v_cursor;
END;
/

アップデート:

おそらく、SELECT ステートメントを直接実行したかのように、クエリの結果が IDE に表示されることを望むでしょう。これは上記のコードでは発生しません。特定のテーブル関数をインストールしない限り、それを達成できるコードは知りません。

あなたができる最善のことは、取得したデータをループで出力することです( を使用DBMS_OUTPUT.PUT_LINE)。

于 2011-08-10T18:07:08.637 に答える