日本語PDF

ExecuteReader()

このメソッドでは、CommandTextで指定されたコマンドを実行し、OracleDataReaderオブジェクトを戻します。

宣言

// C#
public OracleDataReader ExecuteReader();

戻り値

OracleDataReader

実装

IDbCommand

例外

InvalidOperationException - コマンドを実行できない場合

備考

CommandTypeプロパティがCommandType.StoredProcedureに設定されると、CommandTextプロパティはストアド・プロシージャの名前に設定される必要があります。

ExecuteReaderを呼び出すと、この指定したコマンドによってこのストアド・プロシージャが実行されます。ストアド・プロシージャのパラメータがREF CURSORオブジェクトで構成されている場合は、ExecuteReader()またはExecuteNonQuery()を呼び出すかどうかによって動作は異なります。ExecuteReader()を起動すると、REF CURSORオブジェクトは、戻されるOracleDataReaderを通じてアクセスできます。1つの実行から複数のREF CURSORが戻される場合、後続のREF CURSORオブジェクトは、NextResultメソッドによってOracleDataReaderで順番にアクセスできます。ExecuteNonQueryメソッドを起動すると、出力パラメータ値をOracleRefCursor型にキャストでき、次にOracleRefCursorオブジェクトを使用して、DataSetを移入するかまたはOracleDataReaderオブジェクトを作成できます。この方法で、出力パラメータとして戻されたすべてのREF CURSORオブジェクトにランダムにアクセスすることができます。

FetchSizeに対しては値100が使用されます。0を指定すると、行はフェッチされません。詳細は、Obtaining LONG and LONG RAW Dataを参照してください。

XmlCommandTypeプロパティの値が、OracleXmlCommandType.InsertOracleXmlCommandType.UpdateOracleXmlCommandType.DeleteまたはOracleXmlCommandType.Queryに設定されている場合、ExecuteReaderメソッドはInvalidOperationExceptionをスローします。

// C#
 
using System;
using System.Data;
using Oracle.DataAccess.Client; 
 
class ExecuteReaderSample
{
  static void Main()
  {
    string constr = "User Id=scott;Password=tiger;Data Source=oracle";
    OracleConnection con = new OracleConnection(constr);
    con.Open();
 
    OracleCommand cmd = new OracleCommand("select ename from emp", con);

    OracleDataReader reader = cmd.ExecuteReader();

    while (reader.Read())
    {
      Console.WriteLine("Employee Name : " + reader.GetString(0));
    }
 
    // Clean up
    reader.Dispose();
    cmd.Dispose();
    con.Dispose();
  }
}