Переопределение строк, затронутых в SQL Server с использованием ExecuteNonQuery? - PullRequest
2 голосов
/ 07 января 2010

У меня есть оператор вставки, который переносит некоторые данные в несколько табличных переменных, а затем на основании этих данных выполняет несколько вставок в несколько таблиц. Я забочусь только о строках, которые вставляются в реальные таблицы, а не о переменных таблицы, но ExecuteNonQuery вернет сумму всех @@ ROWCOUNT. Что я хотел бы знать, есть ли способ переопределить количество строк, которое возвращается с помощью ExecuteNonQuery?

Мне известно, что я могу использовать ExecuteScalar или выходные переменные в качестве альтернативы.

Вот пример, который сводит его к простому примеру:

CREATE TABLE VersionExample ( Version Varchar(255) )  

Declare @RowCountICareAbout int

DECLARE @Example TABLE ( Version Varchar(255) )  

INSERT INTO @Example Select @@VERSION

INSERT INTO VersionExample SELECT Version FROM @Example

SET @RowCountICareAbout = @@ROWCOUNT

--Use @RowCountICareAbout as the rows affected returned to ExecuteNonQuery

Ответы [ 2 ]

5 голосов
/ 07 января 2010

Не знаю, сработает ли это, но вы пытались включить SET NOCOUNT ON (и затем SET NOCOUNT OFF перед вашим последним запросом)?

Обновление: это сообщение в блоге и комментарии, кажется, указывают, что это действительно будет работать:

http://petesbloggerama.blogspot.com/2006/10/note-to-self-set-nocount-on-not.html

0 голосов
/ 07 января 2010

Нет, нет способа переопределить или изменить это поведение в ADO.NET или SQL Server.

Единственный вариант, который у вас есть, - это собрать интересующие вас числа строк, поместить их в переменную и вернуть их.

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