OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
締切り
済み

PL/SQLのOPEN cursor_name FOR文でCLOSEは必要?

  • 困ってます
  • 質問No.187833
  • 閲覧数1238
  • ありがとう数1
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 52% (72/136)

お世話になります、

Orcacleのストアドで質問があります。

以下のようなストアドを組んだ場合「Close cu1;」は必要なのでしょうか?
カーソルをクローズしないとOracleエラー「カーソルが最大数を超えました。。。」というエラーが出るそうなのですが。

ちなみにClose cu1;を入れるとVBからストアドを呼んだ場合に
以下のOracleエラー
「ORA-01403:データがありません」のエラーが出てしまいます。

アドバイス等、よろしくお願いします。


CREATE OR REPLACE PACKAGE MASTERS as

CURSOR c1 IS select * from userTable;
TYPE type1 IS REF CURSOR RETURN c1%ROWTYPE;

PROCEDURE GetD( cu1 OUT type1);

end;
/

--
CREATE OR REPLACE PACKAGE BODY MASTERS IS

PROCEDURE GetD( cu1 OUT type1) IS
BEGIN
OPEN cu1 FOR select * from userTable ;
これが必要?→ Close cu1;
END GetD;

END MASTERS;
/
通報する
  • 回答数1
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全1件)

  • 回答No.1
レベル9

ベストアンサー率 53% (41/76)

カーソルは有限な資源なので、必ずクローズが必要です。 またこの中ではカーソルをOpenしかしていませんが、FetchしないでVBからどうやってデータを取っているのでしょう? 他にFetchする為のストアードプロシージャがあるのであれば、さらに処理を終了するためのストアードプロシージャを作成してその中でカーソルをクローズしてください。 ...続きを読む
カーソルは有限な資源なので、必ずクローズが必要です。

またこの中ではカーソルをOpenしかしていませんが、FetchしないでVBからどうやってデータを取っているのでしょう?
他にFetchする為のストアードプロシージャがあるのであれば、さらに処理を終了するためのストアードプロシージャを作成してその中でカーソルをクローズしてください。
お礼コメント
takataka111

お礼率 52% (72/136)

これは複数のレコードを一度に取得できるCURSORでFETCHはいりません、本を読んだ限りこのCURSOR(OPEN FOR)カーソルはCLOSEがいらないカーソルだとのことです。

ありがとうございました。
投稿日時 - 2001-12-26 09:17:17


このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このQ&Aにこう思った!同じようなことあった!感想や体験を書こう
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ