Как один процесс выбирает * и выбирает count (*) из той же хранимой процедуры, используя SqlCommand:: Execute (или альтернативу)?

Хранимая процедура, которая у меня есть, возвращает набор результатов, за которым следует счетчик (*). Это хранимая процедура 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.

Возможна ли обработка хранимой процедуры такого типа, или хранимая процедура должна быть переписана?


person user2591070    schedule 17.07.2013    source источник
comment
Пост, похоже, был поврежден. Он должен читать select @resn=resn из заемщика_reservations, где условия, а затем выбрать количество (*) из заемщика_резервации, где условия (т.е. два отдельных утверждения, одно за другим   -  person user2591070    schedule 17.07.2013


Ответы (1)


См. SqlDataReader.NextResult (SqlDataReader возвращается SqlCommand.ExecuteReader):

Переводит средство чтения данных к следующему результату [набору] при чтении результатов пакетных инструкций Transact-SQL.

person Marius    schedule 17.07.2013