0

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

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

4

1 回答 1

0

请参阅SqlDataReader.NextResult(SqlDataReader 由SqlCommand.ExecuteReader返回):

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

于 2013-07-17T11:47:23.033 回答