create procedure pagination_jhgl
@tbname varchar(255), --表名
@tbfields varchar(1000), --返回字段
@orderfield varchar(255), --排序的欄位名
@pagesize int, --頁尺寸
@pageindex int, --頁碼
@ordertype bit, --排序型別,1是公升序,0是降序
@strwhere varchar(1500), --查詢條件
@total int output --返回總記錄數
asdeclare @strsql varchar(5000) --主語句
declare @strorder varchar(200) --排序
declare @strsqlcount nvarchar(500)--查詢記錄總數主語句
declare @strtemp varchar(50) --排序附加語句
--------------排序-----------------1是降序,0未公升序
if @ordertype !=0
begin
set @strtemp= '>(select max('
set @strorder='order by ' + @orderfield + ' asc '
endelse
begin
set @strtemp= '<(select min('
set @strorder='order by '+ @orderfield + ' desc'
end--------------總記錄數---------------
if @strwhere !=''
begin
set @strsqlcount='select @totalcout=count(*) from ' + @tbname + 'where '+ @strwhere
endelse
begin
set @strsqlcount='select @totalcout=count(*) from ' + @tbname
end--------------如果是第一頁------------
if @pageindex =1
begin
if @strwhere !=''
begin
set @strsql = 'select top' +str(@pagesize)+ ' ' + @tbfields + ' from '+ @tbname +' where ' + @strwhere + ' ' + @strorder
endelse
begin
set @strsql = 'select top' +str(@pagesize)+ ' ' + @tbfields + ' from '+ @tbname + ' ' + @strorder
endend
else
begin
if @strwhere !=''
begin
set @strsql='select top ' +str(@pagesize) + ' ' + @tbfields
+' from ' + @tbname + ' where '+@orderfield +' '
+ @strtemp+ ' ' +@orderfield+ ') from (select top'
+str((@pageindex-1)*@pagesize) + ' '+@orderfield +' from '+@tbname
+ @strwhere+ ' '+ @strorder +') as tb)'+ @strorder
endelse
begin
set @strsql='select top ' + str(@pagesize) + ' ' + @tbfields
+' from ' + @tbname + ' where '+@orderfield + ' '
+ @strtemp+ ' ' +@orderfield+ ') from (select top'
+str((@pageindex-1)*@pagesize) + ' '+@orderfield +' from '+@tbname
+ ' '+ @strorder +') as tb)'+ @strorder
endend
exec sp_executesql @strsqlcount,n'@totalcout int output',@total output
exec(@strsql)
go
百萬級SQL分頁儲存過程
百萬級sql分頁儲存過程,請尊重原作者資訊.我只是更新一部分資料,原作者在分頁的處理過程中有一點錯誤.檢測了程式.發現並休正過來的.descript 分頁儲存過程 author blue.dream date 2004 8 18 21 01 update xqf222 date 18 11 2007...
實現千萬級資料分頁的儲存過程!
經測試,在 14483461 條記錄中查詢第 100000 頁,每頁 10 條記錄按公升序和降序第一次時間均為 0.47 秒,第二次時間均為 0.43 秒,測試語法如下 exec getrecordfrompage news,newsid,10,100000 news 為 表名,newsid 為關鍵...
實現千萬級資料分頁的儲存過程!
經測試,在 14483461 條記錄中查詢第 100000 頁,每頁 10 條記錄按公升序和降序第一次時間均為 0.47 秒,第二次時間均為 0.43 秒,測試語法如下 exec getrecordfrompage news,newsid,10,100000 news 為 表名,newsid 為關鍵...