Liquibase 使用 Oracle 注释符号(双破折号)返回带有 SQL 的 ORA-00907

Liquibase returning ORA-00907 with SQL using Oracle comment notation (double dash)

运行 SQL 在 Oracle 上通过 Liquibase 并收到错误:

ORA-00907: missing right parenthesis

我们 运行 的 SQL 有双破折号 --,它也可以代表 PLSQL 中的评论。我猜这就是问题所在。这应该以某种方式转义吗?

delete from mytable B where B.NAME in ('XXX--YYY', 'AAA--BBB');

字符序列 -- 很可能被解释为注释,因此将忽略以下字符直到行尾。

您可以使用以下解决方法,将字符串简单地分成两部分

而不是

'XXX--YYY'

使用

'XXX-'||'-YYY' 

别忘了,如果你有更多的破折号,你必须重复这一步,例如对于 ---,您必须将字符串分成三部分。

对于包含多行注释的字符串可能会出现类似问题:

'XXX/*YYY', 'XXX*/YYY'