首页 > 解决方案 > 为什么@@ROWCOUNT 变量在 IF 语句后返回零

问题描述

这是一个引用 pubs 数据库的简单代码。SELECT 语句返回 10 条记录,因此应将 @@ROWCOUNT 变量设置为 10。但是消息窗口中怎么会显示“找到 0 条记录”。IF 语句后@@ROWCOUNT 设置为 0 是否有原因?

如果我将 SELECT @@ROWCOUNT 放在 WHERE 语句之后,@@ROWCOUNT 变量为 10。但在执行 IF 语句后它会发生变化。

SELECT *
FROM pubs.dbo.employee
WHERE pub_id ='0877' 

IF   @@ROWCOUNT > 0
     PRINT CONVERT(CHAR(2), @@ROWCOUNT) + ' records found'
ELSE
    PRINT 'No records found'

标签: sqlsql-server

解决方案


@@ROWCOUNT返回最后一条语句的行数。它是高度易变的。所以,基本上,任何东西都可以重置它。

如果您关心它,请立即将其分配给参数!

DECLARE @ROWCNT INT;

SELECT * FROM pubs.dbo.employee WHERE pub_id = '0877';
SET @ROWCNT = @@ROWCOUNT;

然后使用参数值。


推荐阅读