我正在开发一个 API,它调用 Oracle 存储过程 - 我无法触及它 - 并返回two参考光标。问题是在我的代码中,只有从 sp 返回的第一个游标被映射,而另一个游标则被映射无效操作异常.
我的存储库类
var sql = "BEGIN CCO_PKG_WHITDRAWREQUEST.OBT_OPCION_RET_DES_PRC(:pi_num_seguro_social , :pi_num_resolucion, :po_cur_valida_res, :po_cur_opciones); END;";
var parameters = new OracleParameter[]
{
new OracleParameter("pi_num_seguro_social", request.NSS),
new OracleParameter("pi_num_resolucion", request.NumResolucion),
new OracleParameter("po_cur_valida_res", OracleDbType.RefCursor, ParameterDirection.Output),
new OracleParameter("po_cur_opciones", OracleDbType.RefCursor, ParameterDirection.Output)
};
//This one gets mapped without problems.
var validaResCursor = await _context.CursorValidaRes.FromSqlRaw(sql, parameters).ToListAsync();
//This one throws the exception.
var opcionesCursor = await _context.CursorOpciones.FromSqlRaw(sql, parameters).ToListAsync();
var result = (opcionesCursor, validaResCursor);
被映射的光标的类
[Keyless]
public class ValidaResCursor
{
public string EsCVEValido { get; set; }
public string Opcion { get; set; }
public string Descripcion { get; set; }
public double SaldoA { get; set; }
public double SaldoB { get; set; }
public string Vigencia { get; set; }
}
}
光标的类别不
[Keyless]
public class OpcionesCursor
{
public string cv { get; set; }
public string tipo { get; set; }
public string descripcion { get; set; }
public double monto { get; set; }
public double salario_bc { get; set; }
}
执行
第一个游标被正确映射(它只有 1 行)。 https://i.stack.imgur.com/42g9b.png
Error
第二个光标抛出错误。 https://i.stack.imgur.com/7XXtj.png
这是我第一次在 dotnet 环境中使用 oracle,但我遵循 oracle 的官方指南(请参阅。https://github.com/oracle/dotnet-db-samples/blob/master/samples/dotnet-core/ef-core/stored-procedure/return-ref-cursor.cs https://github.com/oracle/dotnet-db-samples/blob/master/samples/dotnet-core/ef-core/stored-procedure/return-ref-cursor.cs)正如您所看到的,显然它只适用于仅返回一个游标的 sp。有任何想法吗?任何帮助将不胜感激。