gpt4 book ai didi

c# - 使用 SqlReader 从存储过程中取回多个表

转载 作者:太空狗 更新时间:2023-10-30 00:36:02 26 4
gpt4 key购买 nike

我有一个用户定义的类型,它是 SqlServer 数据库中的数据表。我一直在使用数据库、DbCommand 等来调用存储过程并取回数据集。数据集很方便,因为它们可以包含多个表。

现在我想传入一个Datatable,所以我尝试了:

string _strComText = "stored_procedure_name_changed_to_protect_the_innocent";
_objCom = _objDB.GetSqlStringCommand(_strComText);
_objDB.AddInParameter(_objCom, "@BASE_ITEMIDS", DbType.Object, dtItemIds);
_objCom.CommandType = CommandType.StoredProcedure;
dataset = _objDB.ExecuteDataSet(_objCom);

但我得到一个异常(exception),“@BASE_ITEMIDS”不是正确的类型:“传入的表格数据流 (TDS) 远程过程调用 (RPC) 协议(protocol)流不正确。参数 1 (\"@BASE_ITEMIDS\"):数据类型 0x62 (sql_variant) 的特定类型元数据类型无效。”

我见过用 SqlReader 完成的,但是 sqlReader 可以用来取回多个表吗?如果我的第一个表是空的,我在 SqlReader 中看不到任何行。

最佳答案

can sqlReader be used to get back multiple tables?

是的。您必须按顺序读取每个表并在表之间调用 .NextResult() 方法。

using (var rdr = MySqlCommand.ExecuteReader())
{
do
{
while (rdr.Read())
{
//do something with each record
}
} while(rdr.NextResult());
}

关于c# - 使用 SqlReader 从存储过程中取回多个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2971458/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com