выполнить сбой набора изменений DBMS_AQADM - Причина: Liquibase.exception.DatabaseException: ORA-00900: недопустимый оператор SQL - PullRequest
0 голосов
/ 13 июля 2020

У меня проблемы со следующим набором изменений 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')]

Я могу запустить инструкцию find в SQL Разработчик.

Буду признателен за совет

1 Ответ

0 голосов
/ 20 июля 2020

Используемая мной реализация 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>
....
...