我想要最好的方法来调用存储过程,其中我在单个参数中有多个值,例如City参数,其值为'london','lyon','kln'等等。
我的存储过程就像这样
CREATE PROCEDURE `GetCityEmpData`(IN `City` VARCHAR(64))
BEGIN
SELECT * FROM Employees
WHERE Employees.City in (City);
END
并像这样称呼它
call GetCityEmpData("'London',Lyon'") ;
它返回0行,其中有给定参数的数据。 没有准备声明可以执行相同的操作吗?
答案 0 :(得分:4)
你可以试试这个:
CREATE PROCEDURE `GetCityEmpData`(`City` VARCHAR(64))
BEGIN
set @query = concat("SELECT * FROM Employees
WHERE Employees.City in (" , City , ")");
PREPARE stmt FROM @query;
EXECUTE stmt ;
END
然后你可以按照自己的意愿调用你的程序:
call GetCityEmpData("'London','Lyon'") ;
答案 1 :(得分:1)
您可以使用find_in_set方法完成此操作
CREATE PROCEDURE `GetCityEmpData`(IN `City` VARCHAR(64))
BEGIN
SELECT * FROM Employees
WHERE FIND_IN_SET (Employees.City ,City);
END
并像
那样称呼它call GetCityEmpData('London,Lyon');