Как прочитать два cursor с процедуры?
- Функция вызывает
stored procedure. stored procedureдолжна возвращатьsys_refcursor.
Проблема: код читает только cursor o_limits и выдает ошибку:
Result set does not contain column with the name contracttypeid
public async Task < DepositSertificateTermsResponse > GetDepositSertificateTermsByProduct(int productId) {
List < DepositSertificateTerms > deposits = new List < DepositSertificateTerms > ();
List < ProductPercentagesAndEffectivePercentages > rates = new List < ProductPercentagesAndEffectivePercentages > ();
using(var conn = new OracleConnection(_dbContext.GetOracleConnection().ConnectionString)) {
using(var cmd = new OracleCommand(DbProcedures.GET_CD_PRODUCTS_LIMITS, conn)) {
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("i_product", productId);
cmd.Parameters.Add("o_limits", OracleDbType.Cursor, ParameterDirection.Output);
cmd.Parameters.Add("o_rates", OracleDbType.Cursor, ParameterDirection.Output);
await cmd.Connection.OpenAsync();
var reader = await cmd.ExecuteReaderAsync();
while (await reader.ReadAsync()) {
DepositSertificateTerms deposit = new DepositSertificateTerms();
deposit.ProductId = Convert.ToInt32(reader["productid"]);
deposit.FullNameLocal = reader["fullnamelocal"].ToString();
ProductPercentagesAndEffectivePercentages rate = new ProductPercentagesAndEffectivePercentages();
rate.ContractTypeId = Convert.ToInt32(reader["contracttypeid"]);
rates.Add(rate);
deposits.Add(deposit);
}
}
}
return new DepositSertificateTermsResponse {
Deposits = deposits,
Rates = rates
};
}