找回密码
 立即注册

QQ登录

只需一步,快速开始

Eden.Sun Wyn认证

超级版主

99

主题

2505

帖子

4864

积分

超级版主

Rank: 8Rank: 8

积分
4864

Wyn高级认证Wyn认证

Eden.Sun Wyn认证
超级版主   /  发表于:2023-8-16 17:15  /   查看:910  /  回复:0
本帖最后由 Eden.Sun 于 2023-8-16 17:15 编辑

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

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


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


  存储过程设计如下:接收 vals 参数,在SQL语句中处理参数,还原成:'e1','e2'....,'en' 多值形式进行使用

  1. CREATE DEFINER=`root`@`%` PROCEDURE `sp_test_mutil_param3`(IN vals VARCHAR(255))
  2. BEGIN
  3.     SET @sql = CONCAT('SELECT * FROM test_procedure WHERE `desc` IN (''', REPLACE(vals, ',', ''', '''), ''')');
  4.     PREPARE stmt FROM @sql;
  5.     EXECUTE stmt;
  6.     DEALLOCATE PREPARE stmt;
  7. END
复制代码
  存储过程测试:
  
image.png979908752.png


  2. 添加多值参数,
  
image.png816066894.png

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

   image.png485603637.png

  设计报表进行验证:

   多值参数.gif188404235.png

存储过程.txt

283 Bytes, 下载次数: 19

test_procedure.sql

1.33 KB, 下载次数: 19

wyn-export-20230816171345.zip

3.36 KB, 下载次数: 23

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部