常常找不到自己以前写的程序,刚清理出来的数据分页程序

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

posted on 2004-09-17 14:25  wenew  阅读(180)  评论(0编辑  收藏  举报