我有这个运行Oracle包的代码:
using (PedidoEntities db = new PedidoEntities())
{
OracleParameter p_usuario = new OracleParameter("p_usuario", OracleDbType.Int32);
p_usuario.Direction = System.Data.ParameterDirection.Input; p_usuario.Value = usuario;
OracleParameter p_oficinas = new OracleParameter("p_oficinas", OracleDbType.RefCursor);
p_oficinas.Direction = System.Data.ParameterDirection.Output;
string sql = @"begin
pqte_consultas.Pr_ObtieneOficinasUsuario(:p_usuario, :p_oficinas);
end;";
db.Database.ExecuteSqlCommand(sql, p_usuario, p_oficinas);
OracleDataReader rdr = ((OracleRefCursor)p_oficinas.Value).GetDataReader();
List<Oficina> oficinas = new List<Oficina>();
while (rdr.Read())
{
Oficina oficina = new Oficina()
{
Value = rdr["oficina"].ToString(),
Text = rdr["descripcion"].ToString()
};
oficinas.Add(oficina);
}
return oficinas;
}
p_oficinas是一个RefCursor输出参数。
当我调试时,该参数实际上在执行pl / sql后包含数据读取器,但是,当我运行时
OracleDataReader rdr = ((OracleRefCursor)p_oficinas.Value).GetDataReader();
抛出异常,告知连接已关闭。事实上,当我观察底层连接属性时,即使数据阅读器处于打开状态,它实际上也是关闭的。
我该怎么做?