使用一个 SqlDataAdapter 运行多个存储过程

Posted

技术标签:

【中文标题】使用一个 SqlDataAdapter 运行多个存储过程【英文标题】:Running multiple stored procedures with one SqlDataAdapter 【发布时间】:2013-12-19 12:54:12 【问题描述】:

我的问题:有没有办法像这样使用一个SqlDataAdapter 运行多个存储过程

adapter = new SqlDataAdapter("ProcforselectUserTableWhere ; ProcforselectuserTypeAuthorizationWhere", con);
adapter.SelectCommand.CommandType = CommandType.StoredProcedure;
adapter.SelectCommand.Parameters.AddWithValue("@Userid", Request.QueryString[0]);  
adapter.Fill(dataset);

我试过了,但我得到了错误:

找不到存储过程'ProcforselectUserTableWhere; ProcforselectuserTypeAuthorizationWhere'。

请帮忙

【问题讨论】:

您需要将其变为 SQL 命令,而不是使用多个 EXEC,然后添加您自己的显式参数。或者写一个存储过程来做。 【参考方案1】:

不,这是不可能的,因为存储过程的执行方式与原始 SQL 语句不同。看,参数隐含在存储过程中,而不是在查询中定义。因此Fill 方法正在寻找一个在CommandText 中直接命名的存储过程。

【讨论】:

以上是关于使用一个 SqlDataAdapter 运行多个存储过程的主要内容,如果未能解决你的问题,请参考以下文章

C# SqlDataAdapter 与来自多个数据库的表的 JOIN

使用“SQlDataAdapter”时的最佳实践

使用 SqlDataAdapter 用新名称填充数据集中的表,代码不完全运行且没有错误

SqlDataAdapter.Fill 运行 SQL 命令两次

检测 SqlDataAdapter 填充方法何时完成

SqlDataAdapter 更新插入 与 InsertBulkCopy