2016-08-20 9 views
0

ストアドプロシージャを作成していましたが、以下に示すように複数の値を持つストアドプロシージャを単一のパラメータにコールしようとすると失敗します。複数の値を持つストアドプロシージャをmysqlの単一のパラメータに呼び出す

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

以下のように1つの値を渡すと、1つのレコードが返されます。

call sp_country ('AF') 

しかし、次のように2つ以上の値を渡すと、何も返されません。

call sp_country ('AF,AL') 

私はいくつかのサイトを参照していますが、このシナリオでは正しく取得できません。誰かが私に助言してくれますか?ありがとう!

答えて

0

ここでの問題は、選択文が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

ため、次のスレッドをチェック
関連する問題