我有一个存储过程,我想传递一个字符串,以便在查询中进行评估。
我将基于存在的查询参数在php中构建一个字符串。
因此,我的字符串可能是col1 = val1
或col1 = val1 AND col2 = val2 AND col3 = val3
等。
然后在我的存储过程中,我会做这样的事情:
SET @s = CONCAT('SELECT * from tablename WHERE ' , string);
PREPARE stmt FROM @s;
EXECUTE stmt;
我尝试了一些不同的方法,但没有成功。
这可能吗?
感谢。
答案 0 :(得分:2)
您的代码有效,但您可能会遇到错误。 尝试通过替换来调试它 准备stmt FROM @s;执行stmt;
与
SELECT @s;
然后通过运行确保输出有效,可能是你的建筑错误。
答案 1 :(得分:0)
如果没有看到你的整个过程,那看起来确实应该有效。确保在CREATE子句中为存储过程指定“READS SQL DATA”,即:
CREATE PROCEDURE `foo`(IN bar varchar(100))
READS SQL DATA
BEGIN
-- blah blah blah
END
我正在做你在MySQL尝试做的事情,所以你只是在某处遗漏了一些小东西。