MySQL存储过程,接受参数中有多个值的字符串

Lif*_*sun 1 mysql stored-procedures

我想要调用存储过程的最佳方法,其中我在单个参数中有多个值,例如 City 参数具有像 'london'、'lyon'、'kln' 等值。

我的存储过程是这样的

CREATE PROCEDURE `GetCityEmpData`(IN `City` VARCHAR(64))
BEGIN 
   SELECT * FROM Employees 
   WHERE Employees.City in (City);
END
Run Code Online (Sandbox Code Playgroud)

并像这样称呼它

call GetCityEmpData("'London',Lyon'") ;
Run Code Online (Sandbox Code Playgroud)

它返回 0 行,其中有给定参数的数据。是否可以在没有准备语句的情况下执行相同的操作?

Bas*_*ile 5

你可以试试这个:

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
Run Code Online (Sandbox Code Playgroud)

然后您可以根据需要调用您的程序:

call GetCityEmpData("'London','Lyon'") ;
Run Code Online (Sandbox Code Playgroud)