set RowCount 与 top n,setrowcounttop
有的时候,使用top n中的n是一个变量,那就需要用()来完成:
declare @count1 int set @count1 = 8 select top <strong>(@count1)</strong> * from MyTable
declare @count1 int
set @count1 = 8
set RowCount @count1
select * from MyTable但注意,使用set RowCount有副作用的,一旦设置了,对于后面的语句都会影响到,而且SQL Server在后续的版本中对此有更改,所以要小心使用。
| 重要提示: |
|---|
| 在 SQL Server 的下一个版本中,使用 SET ROWCOUNT 将不会影响 DELETE、INSERT 和 UPDATE 语句。在新的开发工作中,避免将 SET ROWCOUNT 语句与 DELETE、INSERT 和 UPDATE 语句一起使用,并计划修改当前使用该语句的应用程序。另外,对于当前使用 SET ROWCOUNT 的 DELETE、INSERT 和 UPDATE 语句,建议您使用 TOP 语法重写它们。有关详细信息,请参阅 DELETE (Transact-SQL)、INSERT (Transact-SQL) 或 UPDATE (Transact-SQL)。 |
as为定义名称,就是这个字段的别名,页眉上显示的名称.
set为变量赋值.
一般在语句中使用set rowcount是为了使后续的查询、更新、删除操作只影响指定的行数
比如 一起执行如下语句
set rowcount 1
SELECT * FROM sysobjects
结果只返回一行,而如果不加set rowcount 1或者使用set rowcount 0
就会返回所有结果
我想你见到的存储过程里包含set rowcount 0的情况是因为之前应该包含set rowcount 1之类大于0的set rowcount 设置,是为了使set rowcount 0后边的语句受影响的行数为全部记录。
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.
同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。