首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >此触发器在执行.dynamic查询时出错,此处不工作,.It已从oracle转换而来

问此触发器在执行.dynamic查询时出错,此处不工作,.It已从oracle转换而来
EN

Stack Overflow用户
提问于 2022-06-22 00:01:21
回答 1查看 41关注 0票数 0
代码语言:javascript
复制
  The code for contanation is not workinghere 

谢谢你的回复,看来很多语法都需要修改

mysql中的触发器在语法方面是不同的tahn oracle。

EN

回答 1

Stack Overflow用户

发布于 2022-06-22 01:30:03

我马上就看到了一些问题。

  1. 使用||进行字符串连接。默认情况下,在MySQL中,||操作符是一个逻辑OR操作符,而不是字符串连接。使用CONCAT()函数进行字符串连接。如果使用设置SQL模式 PIPES_AS_CONCAT,则可以使用||进行字符串连接,但默认情况下不启用。
  2. open cursor for <stmt>在MySQL上不受支持。MySQL中对游标的支持与Oracle有很大不同。您不能只将Oracle /SQL过程移植到MySQL,您基本上必须开发新的过程。你真的需要学习关于游标的文档和示例。
  3. 似乎您希望在触发器中构建一个动态SQL查询,并执行它。MySQL仅在过程中不支持触发器或函数内的动态SQL。
  4. 您不能在任何类型的存储例程触发器、过程或函数中为动态SQL语句运行游标。必须声明SQL语句,这意味着语法必须固定。 https://dev.mysql.com/doc/refman/8.0/en/sql-prepared-statements.html说: 准备语句的SQL语法可以在存储过程中使用,但不能在存储函数或触发器中使用。但是,游标不能用于准备和执行准备和执行的动态语句。游标的语句在游标创建时被选中,因此语句不能是动态的。

我很抱歉成为坏消息的传递者,但是你想要做的事情在触发器或存储过程中是不可能的。

我不打算花时间去弄清楚你的扳机打算做什么,所以我不能推荐一种替代的方法。我只是想让您知道,MySQL中的触发器和存储过程与您预期的完全不同,而且您可能会对这些限制感到非常沮丧。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72708273

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档