フロント エンドの .Net アプリケーションに複数のデータ セットを返す次のストアド プロシージャを作成しました。
create or replace PROCEDURE GET_EMPLOYEE_INFO
(
EMP_NO IN VARCHAR2,
E_RECORD_SET1 OUT SYS_REFCURSOR,
E_RECORD_SET2 OUT SYS_REFCURSOR,
E_RECORD_SET3 OUT SYS_REFCURSOR,
E_RECORD_SET4 OUT SYS_REFCURSOR
) AS
BEGIN
OPEN E_RECORD_SET1 FOR
SELECT * FROM EMP.EMPLOYEES;
OPEN E_RECORD_SET2 FOR
SELECT * FROM EMP.CITIES;
OPEN E_RECORD_SET3 FOR
SELECT * FROM EMP.STATES;
OPEN E_RECORD_SET1 FOR
SELECT * FROM EMP.DURATION;
各クエリは、単独で正しく実行されます。ストアド プロシージャを実行すると、結果セットが表示されますが、すべてのデータがフェッチされているとは思えません。下部には、まだ「RUNNING IDE CONNECTION」と表示されています。
- プロシージャはループしていますか?
- 種類に制限はあり
SYS_REFCURSOR
ますか? - これらのカーソルを閉じる必要がありますか?