ODP.NET Реализовать курсор для оператора SELECT

Как я могу реализовать простую выборку курсора на базовом SELECT statement like 'SELECT * FROM Employees' используя ODP.NET?

1 ответ

Решение

Так что это довольно просто.

Сначала создать OracleConnection класс как это

OracleConnection con = new OracleConnection(ConfigurationManager.ConnectionStrings["connectionstring"].ConnectionString);

con.Open();  //opens connection

Затем вы определяете и OracleCommand экземпляр вначале путем передачи необработанного запроса / хранимой процедуры в качестве первого аргумента, например

Так что в вашем конкретном случае это будет OracleCommand cmd = new OracleCommand("SELECT * FROM Employees", con

if (con.State == ConnectionState.Open)
{
using (OracleCommand cmd = new OracleCommand(<query>/<stored proc>, con))
{    
cmd.CommandType = CommandType.StoredProcedure;  //in case of stored proc
cmd.BindByName = true;

OracleDataReader reader;
try
  {
    reader = cmd.ExecuteReader();    
    while(reader.Read())
    {
        Console.WriteLine("field: {0}", reader.GetDecimal(0));  
    }    
  }
catch (OracleException e)
  {
  foreach (OracleError err in e.Errors)
    {
       //print errors         
     }
   }
 con.Close(); 
 con.Dispose();
}
}

Вот пример http://www.oracle.com/technetwork/articles/dotnet/williams-refcursors-092375.html

Другие вопросы по тегам