分页存储过程

CREATE PROCEDURE [dbo].[SP_Pagination]  
/*  
***************************************************************  
** 分页存储过程 该存储过程适用于MSSQL2005 及之后版本**  
***************************************************************  
参数说明:  
1.Tables :表名称,视图  
2.PrimaryKey :主关键字  
3.Sort :排序语句,不带Order By 比如:NewsID Desc,OrderRows Asc  
4.CurrentPage :当前页码  
5.PageSize :分页尺寸  
6.Filter :过滤语句,不带Where   
7.Group :Group语句,不带Group By  
效果演示:http://www.cn5135.com/_App/Enterprise/QueryResult.aspx  
***************************************************************/  
(  
@Tables varchar(1000),  
@PrimaryKey varchar(100),  
@CurrentPage int,  
@PageSize int,  
@Filter varchar(1000),  
@Fields varchar(1000) = '*',  
@Sort varchar(200) = NULL,  
@Group varchar(1000) = NULL  
)  
AS  
	/*默认排序*/  
	IF @Sort IS NULL or @Sort = ''  
	SET @Sort = @PrimaryKey
	---------------------------
	 /*默认当前页*/  
	IF @CurrentPage < 1  
	SET @CurrentPage = 1  
	-------------------------------
	/*设置分页参数.*/ 
	DECLARE @strPageSize varchar(50)  
    DECLARE @strStartRow varchar(50)
    DECLARE @strEndRow varchar(50)
	SET @strPageSize = CAST(@PageSize AS varchar(50))  
	SET @strStartRow = CAST(((@CurrentPage - 1)*@PageSize) AS varchar(50))
	SET @strEndRow=CAST((@CurrentPage*@PageSize+1) AS varchar(50))
	IF @Sort IS NULL or @Sort = '' 
	Begin 
		SET @Sort = @PrimaryKey
	End 
	Declare @strSql nvarchar(1000)
	Set @strSql ='
    With TempTB AS
    (Select ROW_NUMBER() over(order by '+ @Sort+') As RowNum,'+ @Fields + ' from '+ @Tables +' where '+ @Filter +')
    Select * from TempTB where RowNum>'+ @strStartRow+ ' And RowNum<' + @strEndRow + '
    Select Count(1) from '+ @Tables +' where '+ @Filter 
    Exec (@strSql)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jerryzhao58

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值