分享

通用的数据分页的存储过程

 仰望//45度微笑 2012-04-05
CREATE PROCEDURE sp_page
@tb varchar(20),--表名
@col varchar(20),--按该列来进行分页
@coltype bit,--@col列的类型,0-数字类型,1-字符类型
@collist varchar(800),--要查询出的字段列表
@selecttype int,--查询类型,1-前页,2-后页,3-首页,4-末页,5-指定页
@pagesize int,--每页记录数
@page int,--指定页
@minid varchar(50),--当前最小号
@maxid varchar(50)--当前最大号
AS
DECLARE @sql varchar(8000)
IF@coltype=1
BEGIN
SET@minid='''' @minid ''''
SET@maxid='''' @maxid ''''
END
SET@sql=
CASE@selecttype
WHEN1--前页
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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多