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

_totalcountstateMark 两个返回参数,分别表示“返回总记录数” 和 “执行状态”
_startRow_endRow两个输入参数,用于接收分页查询的起止记录编号,乐创者会产生并传入。

sql_calc_found_rowsfound_rows,配合使用是为了获取排除limit限制情况下的记录总数。可自行查阅用法。

4 定义数据视图

创建一个存储过程数据视图后,在出现的对话框中“用途”选择 分页查询,选择 get_pageLists 存储过程,对话框配置界面如下图:

这里,存储过程四个参数,都设置为系统变量,对应分别为:
procOutPageRowCount: 数据集记录总数,结合每页记录数,便于报表生成总页码。
proceInPageBeginNum: 当前页起始行,系统自动计算并传入。
proceInPageEndNum:当前页截止行,系统自动计算并传入。
proceOutResultType:存储过程执行结果,0:成功,非0:失败

5 使用

这样就实现了一个存储过程数据视图的定义,后续应用到报表跟普通SQL视图类似。

注意:设置为系统变量的参数,在引用的地方,由于系统内部传递了,因此不会呈现为参数。此例子中,四个参数都为系统变量,没有业务变量。

分页查询的数据视图,只适合用于数据模式为 海量 ,引擎为 按页取数的报表模板。

作者:林  创建时间:2024-09-18 10:25
最后编辑:fancy  更新时间:2025-04-24 11:27