就像EXECUTE IMMEDIATE
在 Oracle 中一样,有没有办法在 MySQL 存储过程中动态执行代码?
我真的想在 MySQL 存储过程中使用准备好的语句,在循环的每次迭代中生成一个新的 SQL 语句。
就像EXECUTE IMMEDIATE
在 Oracle 中一样,有没有办法在 MySQL 存储过程中动态执行代码?
我真的想在 MySQL 存储过程中使用准备好的语句,在循环的每次迭代中生成一个新的 SQL 语句。
它实际上不像我写的那样工作。我只是这样编码:
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方法生成一个语句,它只是用占位符替换条件中的参数,而不是表名。
MariaDB 支持立即执行,因为 10.2 KB 文档是:https ://mariadb.com/kb/en/execute-immediate/