SQL中 ROWCOUNT和@@ROWCOUNT區別

ROWCOUNT sql

        做用:限定後面的sql在返回指定的行數以後便中止處理(查詢 刪除 更新都有效)spa

set rowcount 10            
select * from 表A            這樣的查詢只會返回表A中的前10條數據

注意,set rowcount 的設置會在整個會話中有效。要取消set rowcount的限定,只要在後面設置 set rowcount 0 就能夠了code

同 top遞歸

從上面的示例來看,好像rowcount沒有多大的用處,限制查詢結果的數據,咱們使用top就能夠了,並且還不用擔憂若是忘記取消rowcount的設置而對後面的sql的影響table

ROWCOUNT  與 TOP的區別class

select  TOP  後面不能加參數,只能使用一個具體的int類型的數字cli

    select top 5
date

declare @n intselect

set @n=10sql語句

set rowcount @n

select * from 表A

@@ROWCOUNT

返回上次sql語句所影響的數據行數(查詢  刪除  更新)

select top 2 * from 表A

select @@Rowcount

那麼,哪些地方咱們會用到@@Rowcount呢?

1、可能咱們見到@@Rowcount身影最多的地方是觸發器中,好的觸發器,通常都會在最前面加上if @@rowcount=0 return語句,好比:

create trigger ti_tablea on tablea after update

as

if @@rowcount=0 return

……


這樣,若是tablea被修改的數據行數爲0,那麼觸發器ti_tablea就會直接退出,而不用執行後面的代碼了。


2、第二個可能用到的地方就是咱們能夠使用@@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能夠做爲循環條件來用。

相關文章
相關標籤/搜索