加入收藏 | 设为首页 | 会员中心 | 我要投稿 武陵站长网 (https://www.50888.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

一个基于ROW_NUMBER()的通用分页存储过程代码

发布时间:2023-01-13 09:31:05 所属栏目:MsSql教程 来源:转载
导读: 一个基于ROW_NUMBER()的通用分页存储过程代码
2022-12-16 06:00网络整理发布
建立好如下的存储过程,以后要分页,直接调用改存储过程就可以了。 注意:数据量大、性能要求高的,请个性化处

一个基于ROW_NUMBER()的通用分页存储过程代码

2022-12-16 06:00网络整理发布

建立好如下的存储过程,以后要分页,直接调用改存储过程就可以了。 注意:数据量大、性能要求高的,请个性化处理。 复制代码 代......

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

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

复制代码 代码如下:

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)

mysql 存储分页_Mssq分页存储过程_分页存储管理要求

DROP TABLE #Temp1

END

用法很简单Mssq分页存储过程,但必须在传入的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

(编辑:武陵站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!