如何使用SqlCommand :: Execute(或替代方法)处理来自同一存储过程的“select *”和“select count(*)”?

时间:2013-07-17 11:14:46

标签: c++ sqlcommand

我有一个存储过程返回一个结果集,后跟一个count(*)。这是一个移植到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(*)。

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

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

1 个答案:

答案 0 :(得分:0)

请参阅SqlDataReader.NextResultSqlCommand.ExecuteReader返回SqlDataReader):

  

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