Хранимая процедура, которая у меня есть, возвращает набор результатов, следующий за счет (*). Это хранимая процедура Sybase, портированная на MS SQL 2012.
Так, например, это делает …
select @resn=resn from borrower_reservations where <conditions>
select count(*) from borrower_reservations where <conditions>
@resn определяется как параметр int out.
Я не смог понять, как можно получить оба результата, используя SqlCommand :: Execute () в C ++.
Мне известно, что ExecuteNonQuery () будет заполнять параметры и что ExecuteScalar () лучше всего подходит для отдельных значений, включая count (*).
ExecuteReader (), похоже, не работает, так как тест HasRows возвращает false.
Реально ли обрабатывать хранимую процедуру такого типа, или ее нужно переписать?
Увидеть SqlDataReader.NextResult (SqlDataReader возвращается SqlCommand.ExecuteReader):
Продвигает считыватель данных к следующему результату [set] при чтении результатов пакетных операторов Transact-SQL.
Других решений пока нет …