Create proc [dbo].[tool_getPageData]--分页存储过程
@tablename varchar(50),--表名称
@keyField varchar(50),--不重复的字段
@currentPage int,--当前页码
@pageCount int,--每页记录数
@searchStr varchar(max)=' 1=1 ',--搜索条件
@orderField varchar(50)='' --排序字段即方式,为空时默认@keyField asc
as
declare
@sql varchar(max)
if isnull(len(@orderField),0)=0
set @orderField=@keyField
if isnull(len(@searchStr),0)=0
set @searchStr=' 1=1 '
--set @searchStr=replace(@searchStr,'''','''''')
set @sql='
select top '+cast(@pageCount as varchar(50))+' * from '+@tablename+'
where '+@searchStr+' and '+@keyField+' not in
(
select top '+cast(((@currentPage-1)*@pageCount) as varchar(50))+' '+@keyField+' from '+@tablename+'
where '+@searchStr+' order by '+@orderField+'
)
order by '+@orderField+'
'
--计算总页数与总记录数
set @sql='
declare
@totalCount int,--总记录数
@totalPageCount int--总页数
select @totalCount=count(*) from '+@tablename+'
where '+@searchStr+'
set @totalPageCount=@totalCount/'+cast(@pageCount as varchar(50))+'
if(@totalCount%'+cast(@pageCount as varchar(50))+'<>0)
set @totalPageCount=@totalPageCount+1
select @totalCount as totalCount,@totalPageCount as totalPageCount
'+@sql
exec (@sql)
sql分页查询
最新推荐文章于 2025-05-22 18:27:07 发布