【问题标题】:How to pass comma separated values to stored procedure in MySql?如何将逗号分隔值传递给 MySql 中的存储过程?
【发布时间】:2016-02-07 06:46:03
【问题描述】:
我有类似的存储过程
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
我想将逗号分隔的值传递给第三个参数,如何传递该值?
我试过了 -
call get_details(10,11,'20,30');
但只显示记录的分支 id 为 20,而不是 30。
提前感谢。
【问题讨论】:
标签:
mysql
stored-procedures
【解决方案1】:
您可以在过程中传递逗号分隔的值,但是您需要使用准备好的语句来使用它,因为您传递的值应该在查询中连接起来。
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 ;