ALTER PROCEDURE [dbo].[proc_Page] @Table VARCHAR(100), --表名 @Columns VARCHAR(1000),--字段 @Condition VARCHAR(500), --查询条件 @sort VARCHAR(100), --排序字段 目前只支持单个字段 @order varchar(10),--升序或降序 @PageNumber INT, --开始页数 @PageSize INT, --每页大小 @Count int output--返回总条数 AS BEGIN DECLARE @SQL VARCHAR(MAX), @SQLCOUNT NVARCHAR(MAX) SET @SQL = 'SELECT @A= Count(*) FROM ' + @Table + ' WHERE ' + @Condition SET @SQLCOUNT=@SQL EXEC SP_EXECUTESQL @SQLCOUNT, N'@A INT OUTPUT',@Count OUTPUT IF LEN(@Columns)=0 BEGIN SET @Columns='*' END IF @PageNumber = 1 begin SET @SQL = 'SELECT TOP ' + STR(@PageSize)+@Columns+' FROM '+ @Table + ' WHERE ' + @Condition +' order by '+ @sort+' '+@order END ELSE BEGIN SET @SQL='select * from ( '+ ' select '+@Columns+', row_number() over(order by '+@sort+' '+@order+') rownumber from '+@Table+ ' where '+@Condition+ ') as a '+ ' where 1=1 and '+ ' rownumber between '+STR(@PageSize*(@PageNumber-1)+1)+' and '+STR(@PageSize*@PageNumber) END EXEC(@SQL) END
浙公网安备 33010602011771号