分页存储过程

create      PROC  SelectPage
 @queryStr nvarchar(2000),
 @keyField nvarchar (200),
 @pageSize int,
 @pageNumber int
as
DECLARE @sqlText AS nvarchar(4000)
DECLARE @sqlTable AS nvarchar(4000)
SET @sqlTable = 'SELECT TOP ' + CAST((@pageNumber + 1) * @pageSize AS varchar(30)) + ' ' + @queryStr
SET @sqlText =
'SELECT TOP ' + CAST(@pageSize AS varchar(30)) + ' * ' +
'FROM (' +  @sqlTable + ') AS tableA ' +
'WHERE ' +@keyField + ' NOT IN(SELECT TOP ' +
CAST(@pageNumber * @pageSize AS varchar(30)) + ' ' + @keyField +
' FROM (' + @sqlTable + ') AS tableB)'
EXEC (@sqlText)

你可能感兴趣的:(存储过程)