Liquibase 存储过程抛出 SQL 语法错误

Liquibase Stored Procedure throws SQL syntax error

我正在 Oracle 数据库上开发应用 运行ning 存储过程。它工作正常,但现在我正在尝试使用 Liquibase 运行 程序来拥有一个独立的环境,但我无法让它工作。即使是最简单的 'Hello world' 示例也会给我一个 SQL 语法错误。

我现在只是给你 xml 和错误,因为我不认为它来自 Spring 部分,因为它与数据库一起工作。 'hello world' 如果我在 SqlDeveloper 上 运行 过程本身工作正常。

任何帮助将不胜感激,我真的不知道这有什么问题。谢谢!

程序:

<databaseChangeLog xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
                   xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">

    <changeSet id="PROC_PKG_ACCEPTOR_P_ACCEPTORMISCINIT-create"
               author="sth" runOnChange="true">
        <createProcedure dbms="h2, oracle"
                         encoding="UTF-8"
                         procedureName="TESTHELLO"
                         relativeToChangelogFile="true">
            CREATE OR REPLACE PROCEDURE TESTHELLO
            IS
            BEGIN
            DBMS_OUTPUT.PUT_LINE('Hello World!');
            END;
        </createProcedure>
    </changeSet>
</databaseChangeLog>

错误:

Reason: liquibase.exception.DatabaseException: Erreur de syntaxe dans linstruction SQL {0}; attendu {1}
Syntax error in SQL statement {0}; expected {1}; SQL statement:
CREATE OR REPLACE PROCEDURE TESTHELLO
            IS
            BEGIN
            DBMS_OUTPUT.PUT_LINE('Hello World!');
            END [42001-197] [Failed SQL: CREATE OR REPLACE PROCEDURE TESTHELLO
            IS
            BEGIN
            DBMS_OUTPUT.PUT_LINE('Hello World!');
            END]

http://www.h2database.com/html/features.html#user_defined_functions

所以你不能用 H2 做我想做的事情,似乎解决方案是为 Java 函数创建一个别名。

谢谢大家