fly*_*sic 6 mysql stored-procedures
如何传递数组并在存储过程中使用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 ;
Run Code Online (Sandbox Code Playgroud)
您可以使用字符串连接和 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 ;
Run Code Online (Sandbox Code Playgroud)