GetOracleRefCursor
このメソッドは、選択リストのREF CURSOR
タイプの列に対応するOracleRefCursor
オブジェクトを返します。
宣言
// C# public OracleRefCursor GetOracleRefCursor(int index);
パラメータ
-
index
ゼロベースの列索引です。
戻り値
列のOracleRefCursor
オブジェクト。
例外
InvalidOperationException
- 接続またはリーダーがクローズされているか、Read()
が呼び出されていないか、すべての行が読み取られています。
IndexOutOfRangeException
- 列索引が無効です。
InvalidCastException
- この列型のアクセッサ・メソッドが無効か、列値がNULL
です。
備考
アプリケーションは、戻されたOracleRefCursor
オブジェクトからOracleDataReader
オブジェクトを取得してデータを読み取ることができます。
戻されたOracleRefCursor
オブジェクトは、OracleDataReader
からFetchSize
、InitialLOBFetchSize
、InitialLONGFetchSize
およびUseEdmMapping
プロパティ値を継承します。
オープン・サーバー・カーソルの数を最小限にするには、OracleRefCursor
オブジェクトを明示的に処理する必要があります。
例
CREATE OR REPLACE FUNCTION refcurfunc1 RETURN SYS_REFCURSOR AS VAR_REF SYS_REFCURSOR; BEGIN OPEN VAR_REF FOR SELECT * FROM EMP; RETURN VAR_REF; END;
using (OracleConnection con = new OracleConnection("user id = scott; password = <PASSWORD>; data source = oracle")) { con.Open(); OracleCommand cmd = con.CreateCommand(); cmd.CommandText = "select refcurfunc1() from dual"; OracleDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { OracleRefCursor refCur = reader.GetOracleRefCursor(0); OracleDataReader refCurReader = refCur.GetDataReader(); while (refCurReader.Read()) { Console.WriteLine("RefCursor Data: " + refCurReader.GetString(0)); } refCurReader.Close(); refCurReader.Dispose(); refCur.Dispose(); } }