sql - 为什么@@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'
解决方案
@@ROWCOUNT
返回最后一条语句的行数。它是高度易变的。所以,基本上,任何东西都可以重置它。
如果您关心它,请立即将其分配给参数!
DECLARE @ROWCNT INT;
SELECT * FROM pubs.dbo.employee WHERE pub_id = '0877';
SET @ROWCNT = @@ROWCOUNT;
然后使用参数值。
推荐阅读
- python - 未定义方法
- java - 生成一个系列/返回系列中的第 n 项
- chromium - 如何查看网络请求/响应是否使用 QUIC 和/或 HTTP/2?
- python - PathLib递归删除目录?
- php - 在 HTML 中,多项选择以逗号分隔(有效)保存在 MySQL 中,但不会从基于类的阅读方法中重新显示
- python-3.x - 为数据类型分配的默认内存是否在舍入中起作用?如果浮点数超过分配的内存,它会以什么方式四舍五入?
- mysql - 正确转义 JSON 特殊字符以在 CSV 文件中使用
- c# - C#字符串包含另一个字符串的所有字母字符
- react-native - React Native:状态更改后无法重新渲染图像
- google-chrome - chrome 在 XMLHttpRequest 之后不遵循重定向