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 id=@n

while @@rowcount>0
begin
set @n=@n+1
select * from client_goods where id=@n
end

 

转载于:https://www.cnblogs.com/niuzaihenmang/p/5640276.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值