作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我将我的参数作为“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/
我是一名优秀的程序员,十分优秀!