本帖最后由 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, ",")}')
设计报表进行验证:
|
|