手机
当前位置:查字典教程网 >编程开发 >mssql数据库 >一个基于ROW_NUMBER()的通用分页存储过程代码
一个基于ROW_NUMBER()的通用分页存储过程代码
摘要:建立好如下的存储过程,以后要分页,直接调用改存储过程就可以了。注意:数据量大、性能要求高的,请个性化处理。复制代码代码如下:ALTERPRO...

建立好如下的存储过程,以后要分页,直接调用改存储过程就可以了。

注意:数据量大、性能要求高的,请个性化处理。

复制代码 代码如下:

ALTER PROCEDURE [dbo].[COMMON_PROCEDURE_SelectWithPage]

@Sql VARCHAR(5000),

@CurrentPageNo INT,

@PageSize INT,

@TotalNum INT OUTPUT

AS

SET NOCOUNT ON

DECLARE @SqlCmd VARCHAR(5000)

------------------------------------------ --查询数据

SET @SqlCmd = 'SELECT * FROM (' + @Sql + ') A WHERE RowIndex BETWEEN ' + CONVERT(VARCHAR,(@CurrentPageNo-1) * @PageSize + 1) + ' AND ' + CONVERT(VARCHAR,@CurrentPageNo * @PageSize)

EXEC(@SqlCmd) PRINT (@SqlCmd)

------------------------------------------ --求记录总数

IF @TotalNum = -1

BEGIN

CREATE TABLE #Temp1(num INT)

INSERT INTO #Temp1

EXEC('SELECT count(*) FROM (' + @Sql + ') A')

SELECT @TotalNum=(SELECT * FROM #Temp1)

DROP TABLE #Temp1

END

用法很简单,但必须在传入的SQL中使用ROW_NUMBER() OVER(...) AS RowIndex :

DECLARE @Sql VARCHAR(5000)

DECLARE @CurrentPageNo INT

DECLARE @PageSize INT

DECLARE @TotalNum INT

SET @CurrentPageNo = 100

SET @PageSize = 10

SET @TotalNum = -1

SET @Sql = ' SELECT *, ROW_NUMBER() OVER (ORDER BY 排序字段) AS RowIndex FROM 表名 A WITH (NOLOCK) '

EXEC [dbo].[COMMON_PROCEDURE_SelectWithPage] @Sql,@CurrentPageNo,@PageSize,@TotalNum OUTPUT

SELECT @TotalNum

【一个基于ROW_NUMBER()的通用分页存储过程代码】相关文章:

一个比较实用的大数据量分页存储过程

AspNetPager分页控件 存储过程

SQL Server 大量数据的分页存储过程代码

sql2005 存储过程分页代码

分页的存储过程

sql server中千万数量级分页存储过程代码

目前用到的两个分页存储过程代码

SQL Server 存储过程解析

sqlserver 复制表 复制数据库存储过程的方法

如何在SQL SERVER 2005存储过程中,使用循环语句

精品推荐
分类导航