mysql存储过程和参数

时间:2012-08-13 16:41:13

标签: mysql stored-procedures prepared-statement

我有一个从某个表中选择的存储过程。该表作为参数传递给过程。             SELECT * FROM ParamName 它告诉我,当我尝试运行它时,表格ParamName不存在。 非常感谢任何建议?

1 个答案:

答案 0 :(得分:1)

ParamName本身在MySQL看来是一个表/字段名称,它正在抱怨它。如果Paramname是存储过程的参数,则必须使用@ParamName告诉MySQL查找该名称的变量。

然而,你不能简单地做

SELECT * FROM @ParamName

mysql不允许通过变量指定表/字段名。你必须先准备一份声明:

SET @sql=CONCAT('SELECT * FROM ', @ParamName);
PREPARE s1 FROM @sql;
EXECUTE s1;