微軟沒有公開的游標分頁

2021-09-08 00:02:49 字數 1306 閱讀 6097

create

procedure p_qcd_paginationcursor 

@sql

nvarchar(

4000), 

--要執行的sql語句 

@currentpage

int=

1,  --

要顯示的頁碼 

@pagesize

int=

10, 

--每頁的大小 

@pagecount

int=

0 out, 

--總頁數 

@recordcount

int=

0 out

--總記錄數 

asset nocount 

ondeclare

@cursor

int--

cursor 是游標的id

declare

@timediff

datetime

--耗時測試時間差 cn-web.com提供 

select

@timediff

=getdate() 

exec sp_cursoropen 

@cursor output,

@sql,

@scrollopt=1,

@ccopt=1,

@rowcount

=@pagecount output 

select

@recordcount

=@pagecount

select

@pagecount

=ceiling(

1.0*@pagecount

/@pagesize) ,

@currentpage

=( @currentpage-1)

*@pagesize+1

select

@pagecount,

@currentpage

exec sp_cursorfetch 

@cursor ,

16,@currentpage,

@pagesize

exec sp_cursorclose 

@cursor

select

datediff(ms,

@timediff,

getdate()) 

as 耗時 

go

此方案所說是微軟沒有公開的游標分頁,剛開始懷疑游標分頁肯定浪費效能,不過經過詳細測試後,發現微軟就是微軟,不管如何測試,不管條件如何複雜,資料量再大,效能一直保持最強勁。

微軟乙個未公開的BUG

前段時間客戶打 給我,說自從公司office與檔案伺服器公升級後,許可權完全亂套了,開始還以為是客戶未正確設定許可權而造成,今天有空來研究了一下,原來一切都是微軟的錯。問題描述 檔案伺服器配置 windows server 2008 r2,客戶端使用office 2007 office 2010 故...

利用SQL未公開的儲存過程實現分頁

if exists select from dbo.sysobjects where id object id n dbo p splitpage andobjectproperty id,n isprocedure 1 drop procedure dbo p splitpage go 利用sql...

利用SQL未公開的儲存過程實現分頁

利用sql未公開的儲存過程實現分頁 ifexists select from dbo.sysobjects where id object id n dbo p splitpage andobjectproperty id,n isprocedure 1 drop procedure dbo p s...