当前位置: 首页 > 面试题库 >

使用SqlReader从存储过程中获取多个表

鲜于喜
2023-03-14
问题内容

我有一个用户定义的类型,它是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()在表之间调用方法。

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


 类似资料:
  • 在使用JDBC处理SQL Server存储过程时,我偶尔会遇到两种形式的奇怪行为: 问题1:我在SQL Server Management Studio(SSMS)中运行一个存储过程,它返回一个结果集。然而,当我试着 我有个例外 com.microsoft.sqlserver.jdbc.sqlserverexception:语句未返回结果集。 问题2:我在SSMS中运行了一个存储过程,它引发了一个

  • 问题内容: 我有一个需要很多参数的插入存储过程-其中2个是@ FirstName,@ LastName。我还有一个更新存储过程,该过程需要许多参数-其中2个是@ FirstName,@ LastName。 我想做的是,从插入SP内部完成之后,调用更新SP并将其发送给@ FirstName,@ LastName。 我不知道这样做的正确语法;我试过了: 但我认为这是错误的。 有人可以告诉我怎么写这个电

  • 问题内容: 我正在编写一个存储过程,需要在该过程中动态构造一个SQL语句以引用传入的表名。 我需要让该SQL语句返回结果,然后可以在整个过程的其余部分中使用它。 我已经尝试过使用临时表和其他所有东西,但是我不断收到一条消息,我需要声明变量等。 例如: 或者… 无论如何,有没有这样做而不使用实际表? 谢谢。 问题答案: 您是否尝试过类似的方法: 您需要确保将nvarchar字符串加N作为前缀,例如。

  • 问题内容: 我试图在postgres 9.3上使用sql调用函数内的函数。 这个问题与我的另一篇文章有关。 我写了下面的函数。到目前为止,我还没有合并任何类型的save-output(COPY)语句,因此我试图通过创建嵌套函数print-out函数来解决此问题。 以上功能有效。 尝试创建嵌套函数。 调用嵌套函数。 输出 上面给出了这个。但是,当在print_out()中将arg1,arg2替换为’

  • 问题内容: 我有一个应用程序,每小时执行约20000次DATA-OPERATIONS DATA- OPERATION总共具有30个参数(用于所有10个查询)。有些是文本,有些是数字。某些Text参数最长为10000个字符。 每个DATA-OPERATION都执行以下操作: 单个DATA-OPERATION,可在数据库中插入/更新多个表(约10个)。 对于每一次DATA-OPERATION,我都会建

  • 本文向大家介绍使用C#代码获取存储过程返回值,包括了使用C#代码获取存储过程返回值的使用技巧和注意事项,需要的朋友参考一下 废话不多说,直接给大家贴C#代码了。 ps:在C#中调用存储过程中的两种返回值