如何使用 SqlCommand::Execute(或替代方法)从同一存储过程中“选择 *”和“选择计数(*)”?

Posted

技术标签:

【中文标题】如何使用 SqlCommand::Execute(或替代方法)从同一存储过程中“选择 *”和“选择计数(*)”?【英文标题】:How does one process "select *" and "select count(*)" from same stored procedure using SqlCommand::Execute (or an alternative)? 【发布时间】:2013-07-17 11:14:46 【问题描述】:

我有一个存储过程返回一个结果集,后跟一个计数(*)。这是一个移植到 MS SQL 2012 的 Sybase 存储过程。

例如,它确实...

select @resn=resn from borrower_reservations where <conditions>
select count(*) from borrower_reservations where <conditions>

@resn 被定义为一个 int out 参数。

我一直无法弄清楚如何在 C++ 中使用 SqlCommand::Execute() 获得这两个结果。

我知道 ExecuteNonQuery() 将填充参数,并且 ExecuteScalar() 最适合包括 count(*) 在内的单个值。

ExecuteReader() 似乎不起作用,因为 HasRows 测试返回 false。

处理这种类型的存储过程是否可行,还是必须重写存储过程?

【问题讨论】:

帖子似乎已损坏。它应该是“select @resn=resn from borrower_reservations where conditions”,然后是“select count(*) from borrower_reservations where conditions”(即:两个单独的语句,一个接一个 【参考方案1】:

见SqlDataReader.NextResult(SqlCommand.ExecuteReader返回一个SqlDataReader):

在读取批处理 Transact-SQL 语句的结果时,将数据读取器推进到下一个结果 [集]。

【讨论】:

以上是关于如何使用 SqlCommand::Execute(或替代方法)从同一存储过程中“选择 *”和“选择计数(*)”?的主要内容,如果未能解决你的问题,请参考以下文章

如果加入条件,我该如何解决。如果使用字符串连接,我如何使用

如何使用本机反应创建登录以及如何验证会话

如何在自动布局中使用约束标识符以及如何使用标识符更改约束? [迅速]

如何使用 AngularJS 的 ng-model 创建一个数组以及如何使用 jquery 提交?

如何使用laravel保存所有行数据每个行名或相等

如何使用 Math.Net 连接矩阵。如何使用 Math.Net 调用特定的行或列?