Eden.Sun 发表于 2023-8-16 17:15:42

【报表设计】MYSQL存储过程接收多值参数

本帖最后由 Eden.Sun 于 2023-8-16 17:15 编辑

今天介绍在 wyn 中传递多值参数到 MySQL 的存储过程。

首先明确一点:MySQL 数据库的存储过程是不支持多值参数直接传递的。因此我们需要先将参数处理成单值,在存储过程内部在还原成多值的的形式,进行使用。
基于上面的分析,我们把这个需求的实现分为一下几个步骤:
① 确定存储过程接收的参数,保证参数以英文逗号(,)进行分割;
② 在存储过程中根据逗号,还原参数并使用;
③ 在 Wyn 中调用存储过过程的时候,将参数处理成以逗号分隔的单值参数;
④ 设计报表进行使用。


具体实现细节如下:
1. 根据数据表设计存存储过程:
数据表结构如下:



存储过程设计如下:接收 vals 参数,在SQL语句中处理参数,还原成:'e1','e2'....,'en' 多值形式进行使用
CREATE DEFINER=`root`@`%` PROCEDURE `sp_test_mutil_param3`(IN vals VARCHAR(255))
BEGIN
    SET @sql = CONCAT('SELECT * FROM test_procedure WHERE `desc` IN (''', REPLACE(vals, ',', ''', '''), ''')');
    PREPARE stmt FROM @sql;
    EXECUTE stmt;
    DEALLOCATE PREPARE stmt;
END存储过程测试:



2. 添加多值参数,


调用存储过程,并且通过 Join 表达式,将参数以逗号分隔:call sp_test_mutil_param3('{Join(@P1, ",")}')


设计报表进行验证:


页: [1]
查看完整版本: 【报表设计】MYSQL存储过程接收多值参数