USE [Northwind]
GO
/****** Object: StoredProcedure [dbo].[Sp_Pager] Script Date: 03/25/2013 17:54:18 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER proc [dbo].[Sp_Pager]
@table varchar(100),--表名
@where varchar(200),--条件
@order varchar(200),--排序规则
@pagecount int,--每页的数量
@pageindex int,--当前页数
@totalpage int output,--总页数(输出)
@total int output--总人数(输出)
as
--定义全局变量
declare @sql nvarchar(500)
--确定主键
declare @primarykey varchar(100)=''
select @primarykey=name from sysobjects where parent_obj in(select id from sysobjects where name=@table) and xtype='PK'
--确定总人数
if @order !=NULL or @order !=''
begin
set @sql='select count(*) from '+@table+' '+@where+' order by '+@order
exec sp_executesql @sql,@total output
end
else
begin
set @sql='select count(*) from '+@table+' '+@where +' order by '+@primarykey
exec sp_executesql @sql,@total output
end
--确定总页数
set @totalpage=CEILING(@total/@pagecount)
--判断总页数与index的大小
if @order !=NULL or @order !=''
begin
if @pageindex=@totalpage
begin
set @sql=''
set @sql='select * from ('+'select * from '+@table+' '+@where+' order by '+@order +') where @primarykey not in ('+
'select top '+(@totalpage-1)*@pagecount+' '+@primarykey+' from '+@table+' '+@where+' order by '+@order +')'
exec sp_executesql @sql
end
else
begin
set @sql=''
set @sql='select * from ('+
'select top '+@pagecount+' * from(select top '+@pageindex*@pagecount+' * from '+@table+' order by '+@order+') a order by '+@primarykey+' DESC
) b order by '+@primarykey+' ASC'
end
end
else
begin
if @pageindex =@totalpage
begin
set @sql=''
set @sql='select * from ('+'select * from '+@table+' '+@where +' order by '+@primarykey +') where @primarykey not in ('+
'select top '+(@totalpage-1)*@pagecount+' '+@primarykey+' from '+@table+' '+@where +' order by '+@primarykey
exec sp_executesql @sql
end
else
begin
set @sql=''
set @sql='select * from ('+
'select top '+@pagecount+' * from(select top '+@pageindex*@pagecount+' * from '+@table+' order by '+@primarykey+'ASC ) a order by '+@primarykey+' DESC
) b order by '+@primarykey+' ASC'
end
end
分页存储过程:自己写的
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
分页存储过程
CREATE PROCEDURE
存储 filter null join c -
通用的分页存储过程
通用的分页存储过程
通用的分页存储过程 -
Sql分页存储过程(支持多表分页存储)
USE[DB_Common] GO /******对象:StoredProcedure[dbo]
分页 存储过程 sql 字段 表名 -
.net 存储过程 分页 存储过程分页查询
SQLsever存储过程分页查询
.net 存储过程 分页 SQLsever sql 数据 主键 -
自己写的js分页
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//E
html i++ javascript -
asp.net 存储过程分页 存储过程分页查询
SqlServer存储过程分页查询
asp.net 存储过程分页 SQL 异常信息 当前页