2012-02-22 37 views
1

Oracleで、refカーソルをColdFusionに返すストアドプロシージャと関数を記述していますが、すべて正常に動作します。しかし、私が読んだことのすべては、カーソルや参照カーソルを明示的に閉じる必要があると言います。そうしないと、後でハンドルがなくなる危険があります。coldfusionからの参照カーソルのクローズ

しかし、関数/ stored procの最後でカーソルを閉じると、データはColdFusionに返されません。

私はそれを終えた後、どのように参照カーソルを閉じるのですか?

答えて

2

データベース接続が閉じられると、カーソルも閉じます。 CF管理者には、データベース接続の数に制限があります。 Oracleに渡されるすべての値にcfqueryparamを使用すると、同じクエリに対して同じ接続を再利用できます(タイムアウトに達していない限り)。 Oracleのカーソルプール制限とCF管理の接続制限が一致していることを確認する必要があります。このアプリは一度も問題を抱えていないように思えるので、おそらくそうです。

+0

素晴らしいです、ありがとうございます。それが働いているように見えるが、私はどちらの側にも何かを見つけることができなかった。 –

0

ColdFusionアプリケーションは、返されるカーソルを閉じる必要があります。

私はColdFusionのエキスパートではありませんので、必要な構文については完全にはわかりません。しかし、データベースとやりとりするクライアント言語には、必ずフェッチする結果セットを表すためのオブジェクトや構造があります。データの取得が完了したら、結果セットを閉じるある種のcloseメソッドがあります。これにより、データベース内のREF CURSORも閉じます。データをフェッチしている間に例外があっても、ColdFusionアプリケーションが常にcloseメソッドを呼び出すことを確認します。カーソルリークの最も一般的な原因は、クライアントアプリケーションが例外ハンドラのカーソルを閉じないということです。

+0

[cfstoredproc](http://cfquickdocs.com/cf9/#cfstoredproc)でも[cfinvoke](http://cfquickdocs.com/cf9/#cfinvoke)でもないプロシージャまたはファンクション)には、それらに関連して呼び出すためのあらゆる種類のメソッドまたはアクションがあります。 私が継承したアプリケーションには、REFカーソルを返す何百もの関数があります。私が言われたように、漏れの問題は一度も経験していませんが、私が読んだすべてに –

関連する問題