如何将逗号分隔值传递给 MySql 中的存储过程?

0 mysql stored-procedures

我有像这样的存储过程

    CREATE DEFINER=`test`@`%` PROCEDURE  `test`.`get_details`(
    in p_istudid int,
    in p_icourseid int,
    in p_branchid varchar(20)
    )
    BEGIN
    select ...
    ...
    and branch.id in(p_branchid);
    END
Run Code Online (Sandbox Code Playgroud)

我想将逗号分隔值传递给第三个参数,如何传递该值?我尝试过 -

 call get_details(10,11,'20,30');
Run Code Online (Sandbox Code Playgroud)

但只显示分支 ID 为 20 的记录,而不是 30。

提前致谢。

Abh*_*rty 5

您可以在过程中传递逗号分隔的值,但是您需要使用准备好的语句来使用它,因为您传递的值应该在查询中连接。

delimiter //
   CREATE DEFINER=`test`@`%` PROCEDURE  `test`.`get_details`(
    in p_istudid int,
    in p_icourseid int,
    in p_branchid varchar(20)
    )
    BEGIN
    set @qry = concat('select .... and branch.id in (\'',p_branchid,'\')');
    prepare stmp from @qry;
    execute stmp ;
    deallocate prepare stmp;
    END;//
delimiter ;
Run Code Online (Sandbox Code Playgroud)