在mysql

时间:2016-08-20 20:03:48

标签: mysql sql stored-procedures parameter-passing

我会创建存储过程,但是每当我尝试将具有多个值的存储过程调用到单个参数中时,我就失败了。

delimiter //
create procedure sp_country(IN code varchar(50))
begin
SELECT Name, Code2 FROM country where Code2 in (code);
end;//
delimiter ;

当我传递一个如下的值时,它将返回一条记录。

call sp_country ('AF')

但每当我传递两个以下的值时,它都不会返回任何内容。

call sp_country ('AF,AL')

我一直在引用一些网站,但在这种情况下我没有得到正确的解决方案。有人可以告诉我。谢谢!

1 个答案:

答案 0 :(得分:0)

这里的问题是你的select语句将用where code in 'AF,AL'执行。显然,没有代码为AF,AL的行。

要解决此问题,当您希望在" In"中使用该参数时,您必须稍微修改将参数传递给存储过程的方法。条款。

检查以下主题是否有想法

Passing a varchar full of comma delimited values to a SQL Server IN function

http://www.itdeveloperzone.com/2013/03/using-variable-in-in-clause-in-sql.html