常常找不到自己以前写的程序,刚清理出来的数据分页程序
CREATE PROCEDURE GetRecordByPage
@tblName varchar(255),--表名
@fldName varchar(255),--排序的字段名
@fldStr varchar(1000)='*',--字段列表
@pagesize int=10,--页的大小
@pageIndex int=1,--页序号,第多少页
@order char(4)='ASC'--排序方式
AS
declare @sqlstr varchar(8000)
set @sqlstr='select top '+str(@pagesize)+' '+rtrim(@fldstr) +' from '+rtrim(@tblName)+' where ['+rtrim(@fldName)+'] >('
set @sqlstr=@sqlstr+' select max(['+rtrim(@fldName)+']) from ('
set @sqlstr=@sqlstr+' select top '+str(@pagesize*@pageindex)+' ['+rtrim(@fldName)+'] '
set @sqlstr=@sqlstr+' from '+rtrim(@tblName) +' order by ['+ltrim(rtrim(@fldName))+'] ASC ) a )'
set @sqlstr=@sqlstr+' order by ['+rtrim(@fldName)+']'+rtrim(@order)
/*set @sqlstr='select '+rtrim(@fldstr) +' from '+' ( select top '+str(@pagesize)+' '+rtrim(@fldstr)
set @sqlstr=@sqlstr+' from ( '+'select top '+str(@pagesize*@pageindex)+' '+rtrim(@fldstr)
set @sqlstr=@sqlstr+' from '+rtrim(@tblName) +' order by '+rtrim(@fldName)+' ASC ) a '
set @sqlstr=@sqlstr+'order by '+rtrim(@fldName)+' desc'+' ) b order by '+rtrim(@fldName)+' '+rtrim(@order)*/
print @sqlstr
execute(@sqlstr)
GO