GetOracleDataReader

このメソッドは、選択リストのREF CURSORタイプの列に対応するOracleDataReaderオブジェクトを返します。

宣言

// C#
public OracleDataReader GetOracleDataReader(int index);

パラメータ

  • index

    ゼロベースの列索引です。

戻り値

列のOracleDataReaderオブジェクト。

例外

InvalidOperationException - 接続またはリーダーがクローズされているか、Read()が呼び出されていないか、すべての行が読み取られています。

IndexOutOfRangeException - 列索引が無効です。

InvalidCastException - この列型のアクセッサ・メソッドが無効か、列値がNULLです。

備考

アプリケーションは、戻されたOracleDataReaderオブジェクトからデータを読み取ることができます。

戻されたOracleDataReaderオブジェクトは、OracleDataReaderからFetchSizeInitialLOBFetchSizeInitialLONGFetchSizeおよびUseEdmMappingプロパティ値を継承します。

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())
  {
    OracleDataReader refCurReader = reader.GetOracleDataReader();
    while (refCurReader.Read())
    {
      Console.WriteLine("RefCursor Data: " + refCurReader.GetString(0));
    }
    refCurReader.Close();
    refCurReader.Dispose();
  }
}