执行 DBMS_AQADM 变更集失败 - 原因:liquibase.exception.DatabaseException:ORA-00900:无效的 SQL 语句
execute DBMS_AQADM changeset fails - Reason: liquibase.exception.DatabaseException: ORA-00900: invalid SQL statement
我在使用以下 Liquibase 变更集时遇到问题
- changeSet:
id: 25
author: My_User
comment: "some comment"
objectQuotingStrategy: LEGACY
runAlways: true
changes:
- sql:
dbms: oracle
endDelimiter: ;
splitStatements: true
sql: execute DBMS_AQADM.GRANT_QUEUE_PRIVILEGE ('ALL', 'MY_SCHEMA.Q_ARCHIVECUST_REQUESTS', 'my_role')
stripComments: true
当我 运行 时,出现以下错误
20:56:25.190 DEBUG [liquibase.changelog.ChangeSet]: Reading ChangeSet: common.yaml::25::My_User
20:56:25.191 DEBUG [liquibase.database.core.OracleDatabase]: Executing Statement: execute DBMS_AQADM.GRANT_QUEUE_PRIVILEGE ('ALL', 'MY_SCHEMA.Q_ARCHIVECUST_REQUESTS', 'my_role')
20:56:25.191 INFO [liquibase.executor.jvm.JdbcExecutor]: execute DBMS_AQADM.GRANT_QUEUE_PRIVILEGE ('ALL', 'MY_SCHEMA.Q_ARCHIVECUST_REQUESTS', 'my_role')
20:56:25.329 ERROR [liquibase.changelog.ChangeSet]: Change Set common.yaml::25::My_User failed. Error: ORA-00900: invalid SQL statement
[Failed SQL: (900) execute DBMS_AQADM.GRANT_QUEUE_PRIVILEGE ('ALL', 'MY_SCHEMA.Q_ARCHIVECUST_REQUESTS', 'my_role')]
我可以 运行 在 SQL 开发人员中找到语句。
如果能给我一些建议,我将不胜感激
我使用的 liquibase 实现是基于 XML 的,演示代码片段如下所示; CALL 而不是 EXECUTE。
...
<changeSet id="Umpity-Fratz-01" author="Myself">
<sql splitStatements="true" stripComments="false">
<![CDATA[
CALL Owner.Procedure(p_Parameter_01 => 'xyz');
]]>
</sql>
</changeSet>
....
我在使用以下 Liquibase 变更集时遇到问题
- changeSet:
id: 25
author: My_User
comment: "some comment"
objectQuotingStrategy: LEGACY
runAlways: true
changes:
- sql:
dbms: oracle
endDelimiter: ;
splitStatements: true
sql: execute DBMS_AQADM.GRANT_QUEUE_PRIVILEGE ('ALL', 'MY_SCHEMA.Q_ARCHIVECUST_REQUESTS', 'my_role')
stripComments: true
当我 运行 时,出现以下错误
20:56:25.190 DEBUG [liquibase.changelog.ChangeSet]: Reading ChangeSet: common.yaml::25::My_User
20:56:25.191 DEBUG [liquibase.database.core.OracleDatabase]: Executing Statement: execute DBMS_AQADM.GRANT_QUEUE_PRIVILEGE ('ALL', 'MY_SCHEMA.Q_ARCHIVECUST_REQUESTS', 'my_role')
20:56:25.191 INFO [liquibase.executor.jvm.JdbcExecutor]: execute DBMS_AQADM.GRANT_QUEUE_PRIVILEGE ('ALL', 'MY_SCHEMA.Q_ARCHIVECUST_REQUESTS', 'my_role')
20:56:25.329 ERROR [liquibase.changelog.ChangeSet]: Change Set common.yaml::25::My_User failed. Error: ORA-00900: invalid SQL statement
[Failed SQL: (900) execute DBMS_AQADM.GRANT_QUEUE_PRIVILEGE ('ALL', 'MY_SCHEMA.Q_ARCHIVECUST_REQUESTS', 'my_role')]
我可以 运行 在 SQL 开发人员中找到语句。
如果能给我一些建议,我将不胜感激
我使用的 liquibase 实现是基于 XML 的,演示代码片段如下所示; CALL 而不是 EXECUTE。
...
<changeSet id="Umpity-Fratz-01" author="Myself">
<sql splitStatements="true" stripComments="false">
<![CDATA[
CALL Owner.Procedure(p_Parameter_01 => 'xyz');
]]>
</sql>
</changeSet>
....