【问题标题】:How to get count of affected row in T-SQL如何获取 T-SQL 中受影响的行数
【发布时间】:2015-08-06 13:19:39
【问题描述】:

我有一个带有以下主体的存储过程:

ALTER PROCEDURE dbo.sp_DeleteRoecords
    @Conditions NVARCHAR(200)
AS
BEGIN
    DECLARE @Query NVARCHAR(2000) 

    SET @Query = 'DELETE FROM Customer Where ' + @Conditions
    EXEC (@Query)
END

执行@Query 后如何获取受影响的行?

【问题讨论】:

  • 您应该希望没有人将1 = 1 类型作为您查询的参数
  • 查看@@rowcount 变量。我希望您在该存储过程中所做的事情不会进入生产系统。
  • 在删除之前使用 SELECT COUNT..WHERE.. 到变量中
  • 你真的需要条件变量吗? - 你真的会在每次运行脚本时更改删除条件所基于的列吗?这是应用程序的一部分吗?如果是这样,您不能根据后端的逻辑获取要删除的记录的ID,然后将其传递给存储过程吗?您的代码非常不安全。

标签: sql dynamicquery rows-affected


【解决方案1】:
ALTER PROCEDURE dbo.sp_DeleteRoecords
    @Conditions NVARCHAR(200)
AS
BEGIN
    DECLARE @Query NVARCHAR(2000) 

    SET @Query = 'DELETE FROM Customer Where ' + @Conditions + ';Select @@rowcount'
    EXEC (@Query)
END

删除查询后添加@@rowcount 语句。

【讨论】:

  • 您可以在运行此语句之前运行SET NOCOUNT OFF 并重试吗?此查询适用于我在 SQL2014 上。
猜你喜欢
  • 2012-10-01
  • 1970-01-01
  • 2011-10-28
  • 2011-10-03
  • 1970-01-01
  • 1970-01-01
  • 2019-02-19
  • 1970-01-01
  • 2021-09-14
相关资源
最近更新 更多