如何传递数组并在存储过程中使用WHERE IN?
我需要连接输入字符串或什么?
让我们说
DELIMITER $$
DROP PROCEDURE IF EXISTS `abc`.`table1`$$
CREATE PROCEDURE `abc`.`test`
(IN somestring VARCHAR(255))
BEGIN
SELECT * FROM abc.table1
WHERE flight_type IN somestring
END $$
DELIMITER ;
解决方法:
您可以使用字符串连接和PREPARE语句来运行动态构建的查询.
somestring必须以有效的SQL格式构造,如’1′,’2′,’3′
DELIMITER $$
DROP PROCEDURE IF EXISTS `abc`.`table1`$$
CREATE PROCEDURE `abc`.`test`
(IN somestring VARCHAR(255))
BEGIN
@s=CONCAT("
SELECT * FROM abc.table1
WHERE flight_type IN (",somestring,");")
PREPARE stmt FROM @s;
EXECUTE @s;
END $$
DELIMITER ;
标签:mysql,stored-procedures
来源: https://codeday.me/bug/20190521/1148925.html