Sql 分頁儲存過程

2021-05-27 11:38:22 字數 1948 閱讀 4739

create procedure getrecordfrompage

@tblname       varchar(255),        -- 表名

@fldname       varchar(255),        -- 欄位名 這裡測試了一下,只能乙個字段,

@pagesize      int = 10,            -- 第頁多少條

@pageindex     int = 1,             -- 當前顯示頁

@ordertype     bit = 0,             -- 設定排序型別, 非 0 值則降序

@strwhere      varchar(2000) =''   -- 查詢條件 (注意: 不要加 where)

as declare @strsql    varchar(6000)        -- 主語句

declare @strtmp    varchar(1000)        -- 臨時變數

declare @strorder varchar(500)         -- 排序型別

if @ordertype != 0

begin

set @strtmp = '<(select min'

set @strorder = ' order by [' + @fldname +'] desc'

end

else

begin

set @strtmp = '>(select max'

set @strorder = ' order by [' + @fldname +'] asc'

endset @strsql = 'select top ' + str(@pagesize) + ' * from ['

+ @tblname + '] where [' + @fldname + ']' + @strtmp + '(['

+ @fldname + ']) from (select top ' + str((@pageindex-1)*@pagesize) + ' ['

+ @fldname + '] from [' + @tblname + ']' + @strorder + ') as tbltmp)'

+ @strorder

if @strwhere != ''

set @strsql = 'select top ' + str(@pagesize) + ' * from ['

+ @tblname + '] where [' + @fldname + ']' + @strtmp + '(['

+ @fldname + ']) from (select top ' + str((@pageindex-1)*@pagesize) + ' ['

+ @fldname + '] from [' + @tblname + '] where ' + @strwhere + ' '

+ @strorder + ') as tbltmp) and ' + @strwhere + ' ' + @strorder

if @pageindex = 1

begin

set @strtmp = ''

if @strwhere != ''

set @strtmp = ' where (' + @strwhere + ')'

set @strsql = 'select top ' + str(@pagesize) + ' * from ['

+ @tblname + ']' + @strtmp + ' ' + @strorder

end

exec (@strsql)

go呼叫方式如:

exec getrecordfrompage 'info','info_id',20,350,1,' type=''**'''

此方法在我40萬資料庫裡測試速度很不錯。

sql 儲存過程分頁

create proc myx prpagerecordset querystr nvarchar 1000 keyfield nvarchar 200 pagesize int,pagenumber int as begin declare sqltext as nvarchar 4000 dec...

SQL 儲存過程 分頁

1.俄羅斯儲存過程 的改良版 create procedure pagination1 pagesize int,頁面大小,如每頁儲存20條記錄 pageindex int 當前頁碼 as set nocount on begin declare indextable table id int id...

SQL 分頁儲存過程

create procedure splitpage sql nvarchar 4000 不帶排序語句的sql語句 page int,頁碼 recsperpage int,每頁容納的記錄數 id varchar 255 需要排序的不重複的id號 sort varchar 255 排序欄位及規則 as...