SQL SERVER分页存储过程

--sql分页存储过程
--@sqlstr  查询语句
--@currentpage 当前页码
--@pagesize每页信息数
--返回值
---1、记录数
---2、符合条件的记录集
 

IF EXISTS(SELECT * FROM SYSOBJECTS WHERE name='SP_PagingQuery' AND xtype='P')
DROP PROCEDURE dbo.SP_PagingQuery
GO
/************************
* 作者 : 
* 时间 : 
* 描述 : 分页存储过程
************************/
CREATE PROCEDURE dbo.SP_PagingQuery
(@sqlstr NVARCHAR(4000), --查询字符串
@currentpage INT, --第N页
@pagesize INT, --每页行数
@allrecords INT OUTPUT --返回的总记录数
)AS
SET NOCOUNT ON
DECLARE @P1 INT, --P1是游标的id
@rowcount INT

EXEC sp_cursoropen @P1 OUTPUT,@sqlstr,@scrollopt=1,@ccopt=1,@rowcount=@rowcount OUTPUT --执行后会返回一个空的结果集
SET @allrecords = @rowcount
SET @currentpage = (@currentpage-1)*@pagesize+1
EXEC sp_cursorfetch @P1,16,@currentpage,@pagesize --执行后会返回指定页的数据
EXEC sp_cursorclose @P1 --根据游标标识符值关闭游标
SET NOCOUNT OFF
GO

原文地址:https://www.cnblogs.com/lrl45/p/5135441.html