/*
用存储过程实现的分页程序
*/
CREATE PROC sp_PageRecordset
@queryStr nvarchar(1000), --查询语句, 不要在前面加"SELECT"或"TOP n"
@keyField nvarchar (200), --标识字段
@pageSize int, --每页的行数
@pageNumber int --要显示的页码, 从0开始
AS
BEGIN
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)
END
TEST-----------------------------------------------------------
drop procedure sp_PageRecordset
exec sp_PageRecordset
@queryStr = ' * from wzTa order by [id]',
@keyField = '[ID]',
@pageSize = 100,
@pageNumber = 6000

被折叠的 条评论
为什么被折叠?



