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

时间:2015-11-06 07:16:02

标签: 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

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

 call get_details(10,11,'20,30');

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

提前完成。

1 个答案:

答案 0 :(得分:3)

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

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 ;