CREATE PROCEDURE pagination2 ( @SQL nVARCHAR(4000), --不带排序语句的SQL语句 @Page int, --页码 @RecsPerPage int, --每页容纳的记录数 @ID VARCHAR(255), --需要排序的不重复的ID号 @Sort VARCHAR(255) --排序字段及规则 ) AS
DECLARE @Str nVARCHAR(4000)
SET @Str=''''SELECT TOP ''''+CAST(@RecsPerPage AS VARCHAR(20))+'''' * FROM (''''+@SQL+'''') T WHERE T.''''+@ID+''''NOT IN (SELECT TOP ''''+CAST((@RecsPerPage*(@Page-1)) AS VARCHAR(20))+'''' ''''+@ID+'''' FROM (''''+@SQL+'''') T9 ORDER BY ''''+@Sort+'''') ORDER BY ''''+@Sort
PRINT @Str
EXEC sp_ExecuteSql @Str GO
其实,以上语句可以简化为:
SELECT TOP 页大小 *
FROM Table1 << 上一页 [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] ... 下一页 >> |