CREATE PROCEDURE sp_page
@tb varchar(20),--表名
@col varchar(20),--按該列來進(jìn)行分頁
@coltype bit,--@col列的類型,0-數(shù)字類型,1-字符類型
@collist varchar(800),--要查詢出的字段列表
@selecttype int,--查詢類型,1-前頁,2-后頁,3-首頁,4-末頁,5-指定頁
@pagesize int,--每頁記錄數(shù)
@page int,--指定頁
@minid varchar(50),--當(dāng)前最小號(hào)
@maxid varchar(50)--當(dāng)前最大號(hào)
AS
DECLARE @sql varchar(8000)
IF@coltype=1BEGIN
SET@minid='''' @minid ''''
SET@maxid='''' @maxid ''''
END
SET@sql=
CASE@selecttypeWHEN1--前頁
THEN'SELECT' @collist 'FROM(SELECTTOP' CAST(@pagesizeASvarchar)
'' @collist 'FROM' @tb 'WHERE' @col '<' @minid
'ORDERBY' @col 'DESC)tORDERBY' @col
WHEN2--后頁
THEN'SELECTTOP' CAST(@pagesizeASvarchar) '' @collist
'FROM' @tb 'WHERE' @col '>' @maxid 'ORDERBY' @col
WHEN3--首頁
THEN'SELECTTOP' CAST(@pagesizeASvarchar)
'' @collist 'FROM' @tb 'ORDERBY' @col
WHEN4--末頁
THEN'SELECT' @collist 'FROM(SELECTTOP' CAST(@pagesizeASvarchar)
'' @collist 'FROM' @tb 'ORDERBY' @col 'DESC)tORDERBY' @col
WHEN5--指定頁
THEN'SELECTTOP' CAST(@pagesizeASvarchar) '' @collist
'FROM' @tb 'WHERE' @col 'NOTIN'
'(SELECTTOP' CAST(@pagesize*(@page-1)ASvarchar) '' @col
'FROM' @tb 'ORDERBY' @col ')ORDERBY' @col
END
EXEC(@sql)
GO