评估MySQL存储过程中的字符串

时间:2009-12-10 15:09:18

标签: mysql stored-procedures

我有一个存储过程,我想传递一个字符串,以便在查询中进行评估。 我将基于存在的查询参数在php中构建一个字符串。 因此,我的字符串可能是col1 = val1col1 = val1 AND col2 = val2 AND col3 = val3等。 然后在我的存储过程中,我会做这样的事情: SET @s = CONCAT('SELECT * from tablename WHERE ' , string); PREPARE stmt FROM @s; EXECUTE stmt; 我尝试了一些不同的方法,但没有成功。 这可能吗? 感谢。

2 个答案:

答案 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尝试做的事情,所以你只是在某处遗漏了一些小东西。