大家观察下面SQL语句:
use pubs
go
-----1---
set rowcount 5
select *
from authors
----------
-----2------
select top 5 *
from authors
-------------
这两条语句的最终都是返回表authors中的前5条记录;
但问题是运行完第1条语句后 再运行“select * from authors”的时候查出的还是前5条记录,
甚至是其他表或其他数据库中的表 查询出来后也是前5条记录。。。
除非关闭查询分析器的窗口或断开连接才能正常运行。。。
这是为什么呢?
怎么才能关闭set命令。。。
------解决方案--------------------
use pubs
go
-----1---
set rowcount 5
select *
from authors
----------
-----2------
select top 5 *
from authors
-------------
set rowcount 0
select * from authors
------解决方案--------------------
SET ROWCOUNT
使 Microsoft® SQL Server? 在返回指定的行数之后停止处理查询。
语法
SET ROWCOUNT { number | @number_var }
参数
number | @number_var
是在停止给定查询之前要处理的行数(整数)。
注释
建议将当前使用 SET ROWCOUNT 的 DELETE、INSERT 和 UPDATE 语句重新编写为使用 TOP 语法。有关更多信息,请参见 DELETE、INSERT 或 UPDATE。
对于在远程表和本地及远程分区视图上执行的 INSERT、UPDATE 和 DELETE 语句,忽略 SET ROWCOUNT 选项设置。
若要关闭该选项(以便返回所有的行),请将 SET ROWCOUNT 指定为 0。