SQL Server中Rowcount与@@Rowcount的用法

Posted 那就让我这样吧

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL Server中Rowcount与@@Rowcount的用法相关的知识,希望对你有一定的参考价值。

使用rowcount

rowcount的作用就是用来限定后面的sql在返回指定的行数之后便停止处理,

rowcount的设置会在整个会话中有效

SET ROWCOUNT 10
SELECT * FROM dbo.Customer ORDER BY id desc

使用完之后可以设置为:

SET ROWCOUNT 0

表示下面的查询或者其他操作就可以操作全部,

否则在下面的代码中可能还使用设置为10的这个数量

因为这个 设置:SET ROWCOUNT 10 是针对整个会话的

 

使用top:

后面不能加动态参数,只能跟整数

select top 10 *  from dbo.Customer ORDER BY id DESC

如果要加,需要使用拼字符串的方式

比如:

declare @n int
declare @sql nvarchar(1000)
set @n=10
set @sql=‘select top ‘+cast(@n as varchar(10))+‘ * from dbo.Customer‘
exec(@sql)

性能和可读性都不如rowcount

另外rowcount的作用

还可以用于修改和删除


@@rowcount返回影响上次sql语句所影响的行数

select top 2 * from Customer
select @@Rowcount

--如果表存在的数据大于等于2,则返回2
--如果为1或者0,则@@rowcount返回也是1或者0

注意:删除 修改 查询,新增 都会返回受影响的行数

这玩意用的比较多的对方是:触发器

例如

create trigger ti_tablea on Customer after update
as
if @@rowcount=0 return
……

这样表Customer 受影响的行数如果为0,触发器就会直接退出,不会在继续往下执行

 

第二个用的地方可能是递归或者循环

declare @n int
set @n=1
select * from client_goods where [email protected]

while @@rowcount>0
begin
set @[email protected]+1
select * from client_goods where [email protected]
end

 

以上是关于SQL Server中Rowcount与@@Rowcount的用法的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server中Rowcount与@@Rowcount的用法

Oracle sql%rowcount 返回影响行数;sql server @@RowCount返回影响行数

SQL Server中的@@ROWCOUNT

将@@ rowcount分配给SQL Server存储过程中的变量

sql%bulk_rowcount && sql%rowcount 的使用

CTE、ROW_NUMBER 和 ROWCOUNT