質問
なんとここに明示的に規定されるものだった例がその場で発音を確認することがオンラインに従うろしています。
私C#のクラスを利用しODP.net への接続には、Oracle DBションを行うとともに、手順が含まれています。
私のパッケージの保存の手順を参考にカーソルの出力パラメータ。すべての手続きになってしまいます。カーソルの特定を選択します。
私がこの手順を実行し直接にoracle db、そんなヒット最大数のカーソルをエラーとなります。
な破壊も修復もおもしろくなODP.net は実際に近いこのカーソルをオープンした私の手順?
私が使っているのOracleDataApaper.Fill(データ)。
例えば.
DataSet ds = new DataSet();
OracleConnection conn = new OracleConnection(this.connStr);
OracleCommand com = new OracleCommand("MYPKG.MYQUERY", conn);
OracleDataAdapter adapter = new OracleDataAdapter(com);
conn.Open();
com.Parameters.Add("searchParam", OracleDbType.Varchar2).Value = "myName";
com.Parameters.Add("outCursor", OracleDbType.RefCursor, ParameterDirection.Output);
com.CommandType = CommandType.StoredProcedure;
adapter.Fill(ds);
conn.Close();
PROCEDURE GETALLEMAILS(searchParamIN VARCHAR2, outCursor OUT sys_refcursor) AS
BEGIN
open outCursor
select
EAEMAL as Email
from
EmailTable
where
EmailName = searchParam;
END GETALLEMAILS;
私は恐れの発言を引き出したことをカーソルの後ろにはDBです。れば誰でもへのリンクを提供する公式文書けばいいですか。
更新:
を入力します。した呼び出し
com.Dispose();
conn.Close();
conn.Dispose();
も置いていったのかわからない私の例です。
このフォーラムは、国のOracleDataAdapter.Fill(データ)メソッドはリリースを参考にカーソルの後に記()メソッドが実行されます。
http://www.frontoracle.com/oracle-archive/140/386140-close-ref-cursor.html
私は、Oracle社の文書をより明示的に記述するこのプロセスになってる。
解決
ODP.NET する必要があるの清掃となる。です:
- して処理OracleParameterインスタンスとしてが含まれているポリシー資源(!) やOdp.net ないこ
- して処理OracleCommandオブジェとしてものを含むポリシー資源を閉じる接続になりこれらの
- オカーソルに欠かせない存在になる接続がでodp.net 何もないが清掃した後、接続を閉じはが置から分離したものではなく、いに清掃されます(以前の接続を閉じました。
I o.w.:清掃をしていようがいまいが、作品に
できるOracleDataAdapterではこれまで明確にし、odp.net docsなことを言うので、ただの確認(字)コードとリフレクタまれます。でも経験則とodp.net:回避記憶の漏えい、常に呼び処分は、もの:パラメータには、カーソルをコマンド取引に接続します。
他のヒント
私はあなたがにつまずいてきたのかはわかりませんこのの記事、そしてそれはあなたの質問に直接適用されませんが、それはODP.Netで作業するとき、私は学んだ何かを示していますとき(接続)の疑いで、常に閉じて処分します。私が書くすべてのその方法が、ODP接続のインスタンスを使用して、コマンド、および/またはカーソルがfinally節廃棄すべてをしています。