通用SQL分页过程
2009-04-25 18:24
120 查看
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER PROCEDURE [dbo].[sp_Select_Page]
(
@pageSize int , --一页要显示的行数
@pageIndex int, --第几页 参数
@tabname nvarchar(100), --对那张表
@tdname nvarchar(200), --需要那些字段
@where nvarchar(2000), --条件
@order nvarchar(200), --排序规则 例如 order by id,name
@orderd nvarchar(200), --反排序 例如 order by id desc,name desc
@recount int=1 output, --得到查询的总条数
@pagsum int=1 output --得到查询的总页数
)
AS
BEGIN
Declare @sql nvarchar(4000) --变量
Declare @sql1 nvarchar(4000)
set @sql1='select @recount=count(*) from '+@tabname +' '+@where
exec sp_executesql @sql1,N'@recount int out ',@recount out
print @recount
if(@recount%@pageSize)=0
begin
set @pagsum=@recount/@pageSize
end
else
begin
set @pagsum=@recount/@pageSize+1
end
print @pagsum
if((@pageSize*@pageIndex)<@recount)
begin
set @sql='select '+ 'top '+str(@pageSize*@pageIndex)+'' +@tdname +' from ' +@tabname +' '+@where+' '+@order
set @sql1='select '+ 'top '+str(@pageSize)+'' +@tdname +' from ('+@sql +') as a ' +@orderd
set @sql='select '+ @tdname +' from (' +@sql1+') as b ' +@where+' '+@order
end
else
begin
set @sql='select '+ 'top '+str(@pageSize*@pageIndex)+'' +@tdname +' from ' +@tabname +' '+@where+' '+@order
set @sql1='select '+ 'top '+str(@recount-@pageSize*(@pageIndex-1))+'' +@tdname +' from ('+@sql +') as a '+@orderd
set @sql='select '+ @tdname +' from (' +@sql1+') as b ' +@where+' '+@order
end
print @sql
print 3
exec sp_executesql @sql
END
set QUOTED_IDENTIFIER ON
go
ALTER PROCEDURE [dbo].[sp_Select_Page]
(
@pageSize int , --一页要显示的行数
@pageIndex int, --第几页 参数
@tabname nvarchar(100), --对那张表
@tdname nvarchar(200), --需要那些字段
@where nvarchar(2000), --条件
@order nvarchar(200), --排序规则 例如 order by id,name
@orderd nvarchar(200), --反排序 例如 order by id desc,name desc
@recount int=1 output, --得到查询的总条数
@pagsum int=1 output --得到查询的总页数
)
AS
BEGIN
Declare @sql nvarchar(4000) --变量
Declare @sql1 nvarchar(4000)
set @sql1='select @recount=count(*) from '+@tabname +' '+@where
exec sp_executesql @sql1,N'@recount int out ',@recount out
print @recount
if(@recount%@pageSize)=0
begin
set @pagsum=@recount/@pageSize
end
else
begin
set @pagsum=@recount/@pageSize+1
end
print @pagsum
if((@pageSize*@pageIndex)<@recount)
begin
set @sql='select '+ 'top '+str(@pageSize*@pageIndex)+'' +@tdname +' from ' +@tabname +' '+@where+' '+@order
set @sql1='select '+ 'top '+str(@pageSize)+'' +@tdname +' from ('+@sql +') as a ' +@orderd
set @sql='select '+ @tdname +' from (' +@sql1+') as b ' +@where+' '+@order
end
else
begin
set @sql='select '+ 'top '+str(@pageSize*@pageIndex)+'' +@tdname +' from ' +@tabname +' '+@where+' '+@order
set @sql1='select '+ 'top '+str(@recount-@pageSize*(@pageIndex-1))+'' +@tdname +' from ('+@sql +') as a '+@orderd
set @sql='select '+ @tdname +' from (' +@sql1+') as b ' +@where+' '+@order
end
print @sql
print 3
exec sp_executesql @sql
END
相关文章推荐
- 真正通用的SQL分页存储过程
- MS SQL Server 2005 通用分页存储过程
- SQL 使用系统存储过程实现的通用分页存储过程
- 通用的可带查询条件的SQL语句的分页存储过程
- sql通用分页自定义表条件存储过程
- 临时表缓存实现的通用分页存储过程.sql
- SQL存储过程分页(通用的拼接SQL语句思路实现)
- SQL 实现随机分页的通用分页存储过程
- MS SQLSERVER通用存储过程分页
- 自己修改一个别人的sql2005通用存储过程分页
- SQL 2005通用分页存储过程
- 通用SQL存储过程分页以及asp.net后台调用
- 实现随机分页的通用分页存储过程.sql
- SQL通用分页存储过程
- 通用的可带查询条件的SQL语句的分页存储过程(2)
- 一个通用的分页存储过程实现-SqlServer(附上sql源码,一键执行即刻搭建运行环境)
- sql通用多表分页存储过程
- [SQL]通用的分页存储过程
- MS SQLSERVER通用存储过程分页
- SQL通用存储过程分页,支持多表联合