有没有办法在MySQL中动态执行代码,类似于Oracle中的“执行立即”?

时间:2011-09-27 09:57:09

标签: mysql stored-procedures execute-immediate

与Oracle中的EXECUTE IMMEDIATE类似,有没有办法在MySQL存储过程中动态执行代码?

我真的想在MySQL存储过程中使用预准备语句,在循环的每次迭代中生成一个新的SQL语句。

2 个答案:

答案 0 :(得分:1)

它实际上不像我写的那样工作。 我只是编码:

set @preparedstmt = concat('SELECT tid, LENGTH(message) len FROM ? where tid=? and first=1');
prepare stmt from prepared_stmt;
execute stmt using v_tid;
drop prepare stmt;

只需要处理表名,不应该用占位符替换。所以@preparedstmt应该用concat方法生成一个语句,这只是用占位符替换条件中的参数,而不是表名。

答案 1 :(得分:1)

MariaDB 支持 EXECUTE IMMEDIATE,因为 10.2 KB 文档是:https://mariadb.com/kb/en/execute-immediate/