分页sql存储过程算法

时间:2022-04-25 07:02:40
/****** Object:  StoredProcedure [dbo].[PRO_Pub_FenYe]    Script Date: 08/04/2014 11:14:22 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*
--suchao
--2014-04-27
--分页查找公共方法
*/
CREATE PROCEDURE [dbo].[PRO_Pub_FenYe]
@AsyncSql NVARCHAR(MAX),
@PageIndex int,
@PageSize int,
@RecordCount int output
AS
BEGIN SET NOCOUNT ON DECLARE @Sql NVARCHAR(MAX) --定义SQL语句 SET @Sql=@AsyncSql; DECLARE @pagesql NVARCHAR(MAX)
SET @pagesql='SELECT * FROM ('+@Sql+') AS temp WHERE myrank BETWEEN '+ CAST((@PageIndex-1)*@PageSize+1 AS NVARCHAR(10))+' AND '+CAST(@PageIndex*@PageSize AS NVARCHAR(10))+'' exec sp_executesql @pagesql --执行SQL语句返回当前页面数据 DECLARE @recount NVARCHAR(MAX)
SET @recount='SELECT @RecordCount=COUNT(1) FROM ('+@Sql+') AS temp' EXEC sp_executesql @recount,N'@RecordCount int output',@RecordCount output --返回受影响行数
print @RecordCount
return @@error
END
GO