gpt4 book ai didi

mysql - IN 子句对我来说在 MySQL 中不起作用

转载 作者:行者123 更新时间:2023-11-30 23:49:06 24 4
gpt4 key购买 nike

我将我的参数作为“Suburbun”、“Indigo”传递,以检索与以下在 MySql 中创建的存储过程中的两个营销事件匹配的记录。

CREATE PROCEDURE `DemoSP`(Campaign VARCHAR(3000))
BEGIN
SET @query = CONCAT('Select * from vicidial_log WHERE campaign_id IN (?)');
PREPARE stmt FROM @query;
SET @CampaignID = Campaign;
EXECUTE stmt USING @CampaignID;
DEALLOCATE PREPARE stmt;
END;

它不给出任何行!

但是当我在 SP 中只传递 'Suburbun' 时,它给出了 6 行!

我哪里错了?

--回答!

我试过了 Lee Fentress 在 http://www.poolofthought.com/index.php/2008/12/28/a-comma-seperated-list-as-parameter-to-mysql-stored-procedure/ 中的评论和 peterm 答案反射(reflect)了相似的编码,

成功了!

谢谢,但与 SQL Server 相比,我发现了这个负面标记。

哎呀,谢谢你们!!

最佳答案

在这种情况下,您将无法使用 USING。您可以只构建完整的查询字符串并在没有参数的情况下执行它

DELIMITER $$
CREATE PROCEDURE DemoSP(Campaign VARCHAR(3000))
BEGIN
SET @query = CONCAT('SELECT * FROM vicidial_log WHERE campaign_id IN (', Campaign, ')');
PREPARE stmt FROM @query;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END$$
DELIMITER ;

注意:确保您在 Campaign 中传递的分隔值被正确引用(就像您说的那样)并且值中的引号(如果有)是逃脱了。

这是 SQLFiddle 演示

关于mysql - IN 子句对我来说在 MySQL 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20918875/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com