Я выполняю несколько дискретных запросов к SQL Server в одном пакете. Например:
update tableX set colA = 'freedom'; select lastName from customers; insert into tableY (a,b,c) values (x,y,z);
Теперь я хочу зафиксировать результат в DataSet (из оператора select), что достаточно просто сделать ... но как мне также захватить "мета" ответ от этой команды, аналогично тому, как это делает Query Analyzer / SQL Mgt Studio когда он отображает вкладку «Сообщения» и отображает что-то похожее на:
(1 Row affected) (2 Rows Updated)





Я предлагаю использовать для этого переменную @@ rowcount. Обычно, когда я выполняю такие команды, если я хочу уловить как потенциальную ошибку, так и затронутые строки, я делаю
declare @rowsAffected int, @error int
select * from sometable
select @rowsAffected = @@rowcount, @error = @@error
if @@error <> 0 goto errorCleanup
Ник прав, когда предлагает @@ROWCOUNT - на самом деле, как правило, я всегда использую SET NOCOUNT ON, который имеет (небольшое) преимущество в производительности, но, что более важно, эта деталь является деталью реализации - так что код не должен заботиться ...
Если вы хотите вернуть значение (например, количество обновленных строк), используйте любое из:
У последнего больше всего накладных расходов
изучите события SQL Connection. Я думаю, это то, что вам нужно: http://msdn.microsoft.com/en-us/library/a0hee08w.aspx