C# SQL 分页


DECLARE 	@TableName VARCHAR(100)='tb',  --表名
	@StrWhere NVARCHAR(2000)='',   --条件
	@OrderByColumnName VARCHAR(100)='ID',--排序条件
	@PageIndex INT=0,--初始页
	@PageSize INT=2--页大小

DECLARE @SqlStr NVARCHAR(4000)
		DECLARE @SqlCount NVARCHAR(4000)
		DECLARE @StartIndex VARCHAR(10),@EndIndex VARCHAR(10)
		SET @StartIndex=CONVERT(VARCHAR(10),@PageIndex*@PageSize+1)
		SET @EndIndex=CONVERT(VARCHAR(10),(@PageIndex+1)*@PageSize)

		SET @SqlStr= 'SELECT * FROM ('
		SET	@SqlStr+='SELECT ROW_NUMBER()OVER(ORDER BY '+@OrderByColumnName+') AS RowIndex, * '
		SET	@SqlStr+='FROM '+@TableName+' '
		SET	@SqlStr+=CASE WHEN LEN(@StrWhere)>0 THEN 'WHERE '+@StrWhere+' ) T ' ELSE ') T ' END
		SET	@SqlStr+='WHERE  T.RowIndex BETWEEN '+@StartIndex+' AND '+@EndIndex+' '
		SET @SqlStr+=CASE WHEN LEN(@OrderByColumnName)>0 THEN 'ORDER BY '+ @OrderByColumnName + '' ELSE '' END

		SET @SqlCount='SELECT COUNT(1) FROM '+@TableName
		SET @SqlCount+=CASE WHEN LEN(@StrWhere)>0 THEN ' WHERE '+@StrWhere+' ' ELSE ' ' END

		--SELECT @SqlStr
		--SELECT @SqlCount

		EXEC(@SqlCount)
		EXEC(@SqlStr)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值