日期:2014-05-18  浏览次数:20675 次

set 命令问题

大家观察下面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。