传递数组到MySQL存储例程

我需要传递一个字符串数组作为MySQL存储例程的参数。该数组可以是长的,并且其元素的数量不是固定的。然后我想把字符串值放入一个内存表与一列,所以我可以处理数据。我不知道这是否可以在MySQL中完成。也许需要肮脏的解决方法。

例如,我有字符串香蕉,苹果和橙色。现在我想从我的MySQL水果表获得这些水果的数据。伪代码:

create function GetFruits(Array fruitArray) 
   declare @temp table as
      fruitName varchar(100)
   end

   @temp = convert fruitArray to table
   select * from Fruits where Name in (select fruitName from @temp)
end

Microsoft SQL Server允许您使用TEXT数据类型并以XML字符串形式提交数组,从而快速创建内存表。但是,我不认为这种技术是可能的MySQL。

任何帮助,如何做到这一点将不胜感激!

您可以传送含有清单的字串,并使用 prepared statements来执行查询,例如 – –

DELIMITER $$

CREATE PROCEDURE GetFruits(IN fruitArray VARCHAR(255))
BEGIN

  SET @sql = CONCAT('SELECT * FROM Fruits WHERE Name IN (', fruitArray, ')');
  PREPARE stmt FROM @sql;
  EXECUTE stmt;
  DEALLOCATE PREPARE stmt;

END
$$

DELIMITER ;

如何使用:

SET @fruitArray = '\'apple\',\'banana\'';
CALL GetFruits(@fruitArray);
相关文章
相关标签/搜索