SQL中 ROWCOUNT和@@ROWCOUNT区别

ROWCOUNT 

        作用:限定后面的sql在返回指定的行数之后便停止处理(查询 删除 更新都有效)

set rowcount 10            
select * from 表A            这样的查询只会返回表A中的前10条数据

注意,set rowcount 的设置会在整个会话中有效。要取消set rowcount的限定,只要在后面设置 set rowcount 0 就可以了

同 top

从上面的示例来看,好像rowcount没有多大的用处,限制查询结果的数据,我们使用top就可以了,而且还不用担心如果忘记取消rowcount的设置而对后面的sql的影响

ROWCOUNT  与 TOP的区别

select  TOP  后面不能加参数,只能使用一个具体的int类型的数字

    select top 5

declare @n int

set @n=10

set rowcount @n

select * from 表A

@@ROWCOUNT

返回上次sql语句所影响的数据行数(查询  删除  更新)

select top 2 * from 表A

select @@Rowcount

那么,哪些地方我们会用到@@Rowcount呢?

一、可能我们见到@@Rowcount身影最多的地方是触发器中,好的触发器,一般都会在最前面加上if @@rowcount=0 return语句,比如:

create trigger ti_tablea on tablea after update

as

if @@rowcount=0 return

……


这样,如果tablea被修改的数据行数为0,那么触发器ti_tablea就会直接退出,而不用执行后面的代码了。


二、第二个可能用到的地方就是我们可以使用@@rowcount来作递归或循环。比如下面示例:

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


这个示例是先查询client_goods中是否有id=1的数据,如果有,再查询是否有id=2的数据,一直查下去,直到id没有连续为止。当然大家在看这个


示例的时候不要考虑这个示例的意义,它只是说明了@@rowcount可以作为循环条件来用。





转载于:https://my.oschina.net/u/2299514/blog/617838

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值