1 概述
1.1 版本
| 服务器版本 |
|---|
| v8.0.0及以上版本 |
1.2 功能说明
存储过程分页查询,用于在处理大量数据时,通过存储过程实现高效分页,减少一次性加载数据量,提升报表、列表页面的加载性能。分页查询需配置固定的分页参数,由系统自动传入当前页、每页条数等信息,并接收总记录数。
1 传入和返回的参数及接纳的变量
在上节规定的参数及接纳变量的规则基础上,还需要有:
√ 返回一个数值参数(必须)
用系统变量“procOutPageRowCount”进行接纳,所代表的含义是“记录总数”。并且,只要确保在第一页的时候该参数有值即可。
2 传递的参数及取值的变量
指乐创者需要传递给存储过程的参数,以及,系统变量为乐创者提供该参数的值。
√传递一个数值参数(必须)
从系统变量“procInPageBeginNum”进行取值,所代表的含义是“分页的开始行”。
√ 传递另一个数值参数(必须)
从系统变量“procInPageEndNum”进行取值,所代表的含义是“分页的结束行”。
3 存储过程 get_pageLists
以存储过程 get_pageLists 为例,如下:
CREATE PROCEDURE `get_pageLists`(OUT _totalcount INT,_startRow INT,_endRow INT,out stateMark INT(10))
BEGIN
#分页存储过程
#计算起始行号
SET @startRow = _startRow; #开始行号
#SET @pageSize = _endRow; #每页记录数
SET @rowindex = 0; #行号
set @currCount = _endRow - _startRow;
#合并字符串
SET @strsql = CONCAT(
'select sql_calc_found_rows 订单.* from `订单` limit ' ,@startRow ,',' ,@currCount);
PREPARE strsql FROM @strsql;#定义预处理语句
EXECUTE strsql; #执行预处理语句
DEALLOCATE PREPARE strsql; #删除定义
#通过 sql_calc_found_rows 记录没有使用 limit 语句的记录,使用 found_rows() 获取行数
SET _totalcount = found_rows();
SET stateMark=0;
END_totalcount、stateMark 两个返回参数,分别表示“返回总记录数” 和 “执行状态”
_startRow、_endRow两个输入参数,用于接收分页查询的起止记录编号,乐创者会产生并传入。
sql_calc_found_rows、found_rows,配合使用是为了获取排除limit限制情况下的记录总数。可自行查阅用法。
4 定义数据模型
4.1 功能入口
进入数据模型管理界面,点击全局“+”或某目录的“+”选择新建模型“存储过程”,如下图:
4.2 存储过程配置

4.2.1 基础配置
1、数据连接:下拉选择目标数据库连接(如示例中的ddsl)。
2、存储过程:下拉选择需要调用的存储过程(如示例中的get_pageLists),可搜索。
3、用途:选择【分页查询】。
4.2.2 参数配置
分页查询需配置以下系统变量参数:
- procOutPageRowCount: 数据集记录总数,结合每页记录数,便于报表生成总页码。
- proceInPageBeginNum: 当前页起始行,系统自动计算并传入。
- proceInPageEndNum:当前页截止行,系统自动计算并传入。
- proceOutResultType:存储过程执行结果,0:成功,非0:失败。
注意:分页存储过程必须包含上述 4 个参数,否则无法正常使用分页功能。
4.2.3 数据转换(计算列)配置
如需对分页查询返回的数据进行扩展处理(如字段拼接、公式计算),可使用数据转换功能:
点击右上角【数据转换】按钮,弹出配置窗口;
点击【添加】,新增计算列:
- 计算列名称:自定义字段名(如订单状态名称);
- 值:支持常量和表达式(支持字段引用、函数、变量);
- 数据类型:选择计算结果的类型(如 String/Int);
配置完成后点击【确定】,数据转换规则将在查询运行时自动生效。
5 使用
这样就实现了一个存储过程数据模型的定义,后续应用到报表跟普通SQL视图类似。
注意:设置为系统变量的参数,在引用的地方,由于系统内部传递了,因此不会呈现为参数。此例子中,四个参数都为系统变量,没有业务变量。

分页查询的数据视图,只适合用于数据模式为 海量 ,引擎为 按页取数的报表模板。
最后编辑:fancy 更新时间:2026-06-22 11:36
