我有一个用户定义的类型,它是SqlServer数据库中的数据表。我一直在使用Database,DbCommand等调用存储过程并获取数据集。数据集很方便,因为它们可以包含多个表。
现在我想传入一个数据表,所以我尝试了:
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);
但是我收到一个异常,指出“ @BASE_ITEMIDS”不是正确的类型:“传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确。参数1(\“ @ BASE_ITEMIDS \”):数据类型0x62 (sql_variant)的类型特定于元数据的类型无效。”
我已经用SqlReader看到了这一点,但是sqlReader可以用来获取多个表吗?如果我的第一个表为空,则在SqlReader中看不到任何行。
可以使用sqlReader取回多个表吗?
是的。您必须按顺序读取每个表并.NextResult()在表之间调用方法。
.NextResult()
using (var rdr = MySqlCommand.ExecuteReader()) { do { while (rdr.Read()) { //do something with each record } } while(rdr.NextResult()); }