CreateProcedure Common_Page ( @strTablevarchar(500), @strSltvarchar(500)=null, @strKeyvarchar(500)='ID', @strWherevarchar(500) =null, @strOrdervarchar(500)='ID desc', @PageSizeint=20, @Pageint=1, @RecordCountint output ) as declare@SQLnvarchar(4000) if(@Page<1) set@Page=1 declare@startIDint set@SQL=N'select @RC=count(*) from '+@strTable+''+@strWhere exec sp_executesql @SQL,N'@RC int output',@RecordCount output --select @startID=id from adminlog order by id desc set@startID=@PageSize*(@Page-1)+1 if(@startID>@RecordCount) begin --返回空记录 set@SQL=N'select '+@strSlt+' from '+@strTable+'where 1=0' end else begin set@SQL='set RowCount '+Convert(varchar(30),@startID) +'' set@SQL=@SQL+'select @S='+@strKey+' from '+@strTable+''+@strWhere+' order by '+@strOrder exec sp_executesql @SQL,N'@S int output',@startID output if(Len(Ltrim(@strWhere))>6) set@strWhere=@strWhere+' and '+@strKey+'<='+Convert(varchar(30),@startID) set@SQL='set RowCount '+Convert(varchar(30),@PageSize) +'' set@SQL=@SQL+'select '+@strSlt+' from '+@strTable+''+@strWhere+' order by '+@strOrder end execute(@SQL)