SQL Server 2008: Executenonquery не возвращает количество затронутых строк - PullRequest
0 голосов
/ 21 ноября 2018

Из C # я запускаю запрос на обновление, используя (хранимая процедура):

command.ExecuteNonQuery(...);

Затем в хранимой процедуре я строю динамический запрос и выполняю, используя sp_executesql:

    DECLARE @ParmDefinition NVARCHAR(500)
    DECLARE @pParam1 NUMERIC(18,0)
    DECLARE @pParam2 BIGINT

    SET @ParmDefinition = N'@Param1 numeric(18,0), @Param2 bigint'
    SET @pParam1 = @Param1
    SET @pParam2 = @Param2

    DECLARE @SQLString  nvarchar(max)= 'UPDATE ' +  @MyServer + @MyDB + '.[dbo].[MyTable] ' +
                                       'SET SomeField= @Param1 ' +
                                       'WHERE F1= @Param2', @rowcnt INT;

    EXECUTE sp_executesql @SQLString, @ParmDefinition, @Param1 = @pParam1, @Param2 = @pParam2
    SELECT @rowcnt = @@ROWCOUNT

В C # ExecuteNonQuery возвращается -1.Я хочу получить количество затронутых строк.

В чем проблема?

1 Ответ

0 голосов
/ 21 ноября 2018

Я решил это.

Виновной была строка, которую я поставил в начале хранимой процедуры:

SET NOCOUNT ON;

Удаляя вышеуказанную строку, теперь он работает отлично, количество затронутых строк корректно возвращается в C #.

...