SqlServer中用存储过程实现多条件分页

Create Proc Paging
(
	@PageIndex int,
	@PageSize int,
	@DName varchar(50)=’’,
	@BName varchar(50)=’’,
	@PageCount int=0 out
)
as
begin
	–定义一个Nvarchar的恒成立的Sql语句
	declare @Sql Nvarchar(1000) = N’select * from Zong where 1 = 1 ’
	–判断查询框DName是否有值
	if(len(@DName)>0)
		–有值就把这句sql语句拼接到恒成立的sql语句里
		set @Sql += ’ and DName like ‘’%’+@DName+’%’’’
	–判断查询框BName是否有值
	if(len(@BName)>0)
		–有值就把这句sql语句拼接到恒成立的sql语句里
		set @Sql += ’ and BName = ‘+@BName+’’
	–把拼接的字符串转成表明别名TT
	set @Sql = ‘(’+@Sql+’)TT’
	–总记录数
	declare @SqlCount Nvarchar(1000) = N’select @PageCount = count() from’+@Sql
	–系统存储过程拼接字符串
	exec sp_executesql @sqlCount,N’@PageCount int out’,@PageCount out
	–分页
	declare @SqlPaging Nvarchar(1000) = ‘select top(’+convert(varchar(20),@PageSize)+’) * from  ‘+@Sql+’
	where CDJ not in(select top(’+convert(varchar(20),((@PageIndex - 1)@PageSize))+’) CDJ from ‘+@Sql+’)’
	–系统存储过程执行字符串
	exec sp_executesql @sqlpaging
end
–测试分页结果
declare @Count int
exec Paging 1,3,’’,’’,@Count out
select @Count
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值