SQL Server 2008:Executenonquery 未返回受影响的行数
SQL Server 2008: Executenonquery not returning number of rows affected
在 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。我想获得受影响的行数。
有什么问题?
我已经解决了
罪魁祸首是我放在存储过程开头的行:
设置无计数;
通过删除上面的行,现在它运行良好,受影响的行数正确返回到 C#。
在 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。我想获得受影响的行数。
有什么问题?
我已经解决了
罪魁祸首是我放在存储过程开头的行:
设置无计数;
通过删除上面的行,现在它运行良好,受影响的行数正确返回到 C#。