Получение «выходных сообщений» из пакетной команды SQL (SQL Server) - PullRequest
3 голосов
/ 18 ноября 2008

Я выполняю несколько отдельных запросов в одном пакете к 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)

Ответы [ 3 ]

5 голосов
/ 19 ноября 2008

посмотрите на события SQL-соединения. Я думаю, это то, что вы после: http://msdn.microsoft.com/en-us/library/a0hee08w.aspx

3 голосов
/ 18 ноября 2008

Я бы предложил использовать для этого переменную @@ rowcount. Обычно, когда я выполняю такого рода команды, если я хочу перехватить как потенциальную ошибку, так и затронутые строки, я делаю

declare @rowsAffected int, @error int

select * from sometable
     select @rowsAffected = @@rowcount, @error = @@error

if @@error <> 0 goto errorCleanup
1 голос
/ 19 ноября 2008

Ник вправе предложить @@ROWCOUNT - на самом деле, как правило, я всегда использую SET NOCOUNT ON, что имеет (небольшое) преимущество в производительности - но, что более важно, эта деталь - деталь реализации - поэтому вы код не должно волновать ...

Если вы хотите вернуть значение (например, количество обновленных строк), используйте любой из:

  • возвращаемое значение
  • выходной параметр
  • Оператор SELECT

Последний имеет больше всего накладных

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...