51Testing软件测试论坛

标题: mysql触发器无法执行动态拼接的sql语句 [打印本页]

作者: 测试积点老人    时间: 2020-7-31 15:52
标题: mysql触发器无法执行动态拼接的sql语句
mysql触发器无法执行动态拼接的sql语句
  1. CREATE <a href="mailto:DEFINER=`sa`@`%">DEFINER=`sa`@`%</a>` PROCEDURE `sp_insertodstasktable`(in dbName VARCHAR(64),in sourceTable VARCHAR(64),
  2. in keyName VARCHAR(64), in id VARCHAR(64),in statusValue tinyint)
  3. BEGIN
  4. SET @tableName = f_getodstasktablename();
  5. -- CALL sp_createodstasktable(@tableName);
  6. PREPARE exec_sql FROM "INSERT INTO ods_task_20200730 values('db1','cms_channel','id','123456','0',NOW())";
  7. EXECUTE exec_sql;
  8. DEALLOCATE PREPARE exec_sql;
复制代码


直接上代码,上面的一句动态sql语句,由于insert的对象表,是动态创建的。执行上面的存储过程是可以的。
但是由于这个操作,是需要在具体的触发器下才能执行。触发器下运行报错:
  1. Dynamic SQL is not allowed in stored function or trigger
复制代码

有什么好的解决办法吗?

作者: 海海豚    时间: 2020-8-3 10:36
把动态sql的执行操作,用存储过程包起来。
作者: jingzizx    时间: 2020-8-3 13:08
参考楼上意见
作者: qqq911    时间: 2020-8-3 13:50
再加上一层包装
作者: 郭小贱    时间: 2020-8-3 16:08
数据库是我的弱项,来学习。




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2