Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Получение выходных сообщений из пакетной команды SQL (SQL Server)

Автор вопроса: mikeymoОтветов: 3

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

sql-server

Ответы

Ответ 1 · рейтинг 5 · Mladen Prajdic

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

Ответ 2 · рейтинг 3 · Nick DeVore

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

declare @rowsAffected int, @error int

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

if @@error <> 0 goto errorCleanup

Ответ 3 · рейтинг 1 · Marc Gravell

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

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

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

У последнего больше всего накладных расходов

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы