为什么@@ ROWCOUNT变量在IF语句后返回零

时间:2019-06-19 18:45:53

标签: sql sql-server

这是引用pubs数据库的简单代码。 SELECT语句返回10条记录,因此@@ ROWCOUNT变量应设置为10。但是在消息窗口中,它说“找到0条记录”。在IF语句@@ ROWCOUNT设置为0之后,为什么有原因吗?

如果我将SELECT @@ ROWCOUNT放在WHERE语句之后,则@@ ROWCOUNT变量位于10。但是在执行IF STATEMENT后它会更改。

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

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

1 个答案:

答案 0 :(得分:3)

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

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

DECLARE @ROWCNT INT;

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

然后使用参数值。