【发布时间】: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