【发布时间】:2023-03-17 22:43:01
【问题描述】:
如果我运行这个:
DECLARE @sql NVARCHAR(10) = NULL;
EXEC sp_executesql @sql;
SELECT @@ROWCOUNT;
我希望得到 0,甚至 NULL 也有意义。但我也不明白,我得到 1。为什么执行 NULL 查询会影响 1 行?如果我传入一个“正确的”(non_NULL)查询,那么它工作正常。
背景(对于那些关心的人):这是来自应该生成一些动态 SQL 以更新一行且仅一行的过程。我需要检查 1 行是否受到影响,而不是 0 或 2 或超过 2。它工作正常,直到设法生成一个 NULL SQL 语句,这被视为成功 - 哎呀!
实际的解决方法是在运行之前检查 SQL 是否为非 NULL,并将 NULL 语句视为除 1 之外的结果。但我仍然很好奇它为什么会这样。
【问题讨论】:
-
进行简单赋值的语句总是将@@ROWCOUNT 值设置为1
标签: sql sql-server tsql null