set ANSI_NULLS ONset QUOTED_IDENTIFIER ONgoALTER PROC [dbo].[P_viewPage]@TableName VARCHAR(200),--表名@FieldList VARCHAR(2000),--显示列名,如果是全部......
END END IF @SortType = 3 --多列排序,必须包含主键,且放置最后,否则不处理 BEGIN IF CHARINDEX(',' @PrimaryKey ' ',',' @Order) = 0 BEGIN PRINT('ERR_02') RETURN END IF @PageIndex <= CEILING((@TotalCount 0.0)/@PageSize)/2 --正向检索 BEGIN SET @Sql = 'SELECT TOP ' STR(@PageSize) ' ' @FieldList ' FROM ( ' 'SELECT TOP ' STR(@PageSize) ' ' @FieldList ' FROM ( ' ' SELECT TOP ' STR(@PageSize*@PageIndex) ' ' @FieldList ' FROM ' @TableName @new_where1 @new_order1 ' ) AS TMP ' @new_order2 ' ) AS TMP ' @new_order1 END ELSE --反向检索 BEGIN SET @Sql = 'SELECT TOP ' STR(@PageSize) ' ' @FieldList ' FROM ( ' 'SELECT TOP ' STR(@PageSize) ' ' @FieldList ' FROM ( ' ' SELECT TOP ' STR(@TotalCount-@PageSize*@PageIndex @PageSize) ' ' @FieldList ' FROM ' @TableName @new_where1 @new_order2 ' ) AS TMP ' @new_order1 ' ) AS TMP ' @new_order1 END END END PRINT(@Sql) EXEC(@Sql)