代码改变世界

动态的SQL分页

2010-10-14 10:47  默念默  阅读(413)  评论(2编辑  收藏  举报

alter procedure sp_aspnetpage
@curpage int, 
@tablename varchar(50),--输入参数
@count int output,--输出参数
@order varchar(10),
@key varchar(10),
@pagesize int=2,
@condition varchar(2000)='1=1'
as
begin
set nocount on
--设置开始行号
declare @start_row_num int

set @start_row_num=(@curpage-1)*@pagesize
--设置动态sql语句
declare @sql varchar(1000)

set @sql='select top '+cast(@pagesize as varchar(20))+'* from '+@tablename+' where '+@condition+' and '+@key+' not in (select top '+convert(varchar(20),@start_row_num)+' '+@key+' from '+@tablename+ ' where '+@condition+' order by '+@order+') order by '+@order
--获得总记录数
declare @countnum nvarchar(4000)

set @countnum='select @all=count(-1) from '+@tablename

exec sp_executesql @countnum,N'@all int output',@count output
--执行分页sql
print @sql
exec (@sql)
end