使用query multiple读取多个结果集
Read multiple result sets using query multiple
我的程序返回两个结果 sets/tables,
我想将这两个结果集读取到两个不同的列表中并绑定该列表。
我能够将一个结果集读入列表,但我尝试了多种方法将多个结果集读入动态列表,但它给了我 "TTC Error Oracle"。
如何使用QueryMultiple读取多个结果集?
将单个结果集读入动态列表的代码:
public ResponseModel GetDoctorDetails(CustomerRequest data)
{
try
{
var p = new OracleDynamicParameters();
p.Add("p_parameter1", data.PARAMETER1, dbType: OracleDbType.Int32, direction: ParameterDirection.Input, size: 8);
p.Add("p_parameter2", data.PARAMETER2, dbType: OracleDbType.Int32, direction: ParameterDirection.Input, size: 8);
p.Add("p_out_cursor", dbType: OracleDbType.RefCursor, direction: ParameterDirection.Output, size: 0);
using (var multi = _oracleConnection.QueryMultiple("procedure_name", param: p, commandType: CommandType.StoredProcedure))
{
List<dynamic> list = multi.Read<dynamic>().AsList();
return new ResponseModel { ResultSet = list, StatusCode = 1, StatusDescription = "Success" };
}
}
catch (Exception ex)
{
throw ex;
}
}
我尝试了以下方法来读取多个结果集,但它给了我 "TTC Error"
List<DataTable> list = new List<DataTable>();
list = multi.Read<DataTable>().AsList();
和
List<List<dynamic>> list = new List<List<dynamic>>();
list = multi.Read<List<dynamic>>().AsList();
请帮忙。
看来你必须做两件事。
首先,您需要一种方法来映射返回的空间。为此,您必须创建自己的映射器供 Dapper 读取。您可以在此处查看如何执行此操作:
Dapper. Map to SQL Column with spaces in column names
对于多个查询,您只需为每个集合调用多次读取即可:
using (var multi = _oracleConnection.QueryMultiple("procedure_name", param: p, commandType: CommandType.StoredProcedure))
{
List<dynamic> list1 = multi.Read<dynamic>().AsList();
List<dynamic> list2 = multi.Read<dynamic>().AsList();
List<dynamic> list3 = multi.Read<dynamic>().AsList();
...
}
我的程序返回两个结果 sets/tables, 我想将这两个结果集读取到两个不同的列表中并绑定该列表。
我能够将一个结果集读入列表,但我尝试了多种方法将多个结果集读入动态列表,但它给了我 "TTC Error Oracle"。
如何使用QueryMultiple读取多个结果集?
将单个结果集读入动态列表的代码:
public ResponseModel GetDoctorDetails(CustomerRequest data)
{
try
{
var p = new OracleDynamicParameters();
p.Add("p_parameter1", data.PARAMETER1, dbType: OracleDbType.Int32, direction: ParameterDirection.Input, size: 8);
p.Add("p_parameter2", data.PARAMETER2, dbType: OracleDbType.Int32, direction: ParameterDirection.Input, size: 8);
p.Add("p_out_cursor", dbType: OracleDbType.RefCursor, direction: ParameterDirection.Output, size: 0);
using (var multi = _oracleConnection.QueryMultiple("procedure_name", param: p, commandType: CommandType.StoredProcedure))
{
List<dynamic> list = multi.Read<dynamic>().AsList();
return new ResponseModel { ResultSet = list, StatusCode = 1, StatusDescription = "Success" };
}
}
catch (Exception ex)
{
throw ex;
}
}
我尝试了以下方法来读取多个结果集,但它给了我 "TTC Error"
List<DataTable> list = new List<DataTable>();
list = multi.Read<DataTable>().AsList();
和
List<List<dynamic>> list = new List<List<dynamic>>();
list = multi.Read<List<dynamic>>().AsList();
请帮忙。
看来你必须做两件事。
首先,您需要一种方法来映射返回的空间。为此,您必须创建自己的映射器供 Dapper 读取。您可以在此处查看如何执行此操作:
Dapper. Map to SQL Column with spaces in column names
对于多个查询,您只需为每个集合调用多次读取即可:
using (var multi = _oracleConnection.QueryMultiple("procedure_name", param: p, commandType: CommandType.StoredProcedure))
{
List<dynamic> list1 = multi.Read<dynamic>().AsList();
List<dynamic> list2 = multi.Read<dynamic>().AsList();
List<dynamic> list3 = multi.Read<dynamic>().AsList();
...
}