Dynamic SQL is not allowed in stored function or trigger
关于 mysql 的这个错误:
导致的原因是 :
1. 在function或者是trigger里面执行了动态sql语句。
2. 是在function或者是trigger里面调用了含有动态sql语句的存储过程
单独在存储过程里面执行动态sql语句是没有问题的。
解决的办法:
目前最新的mysql版本来说 function trigger还是不支持 动态sql语句的。
当然可以绕开数据库 用应用程序来解决是最好的了。
要是硬要用数据库的办法来解决的话 :(以function为例子)
我的办法是 :
1. 生成一张存储 function 所执行的所有语句到临时表中(包括调用其他procedure产生的ddl ,dml语句)
(此时的过程返回的结果 应该也是以字符串的格式 将产生的ddl ,dml语句插入到临时表中去)
2. 遍历顺序执行临时表