создать функцию SQL для базы данных H2 на Liquibase - PullRequest
0 голосов
/ 07 мая 2020

Поскольку мне нужно использовать 2 базы данных (psql и h2) с Liquibase, я попытался создать SQL функций разными способами:

<changeSet author="zina" id="calculate_test">
        <sqlFile            dbms="h2, psql"
                            encoding="UTF-8"
                            endDelimiter="/nGO"
                            path="calculate_test.sql"
                            relativeToChangelogFile="true"
                            splitStatements="false"
                            stripComments="false"/>
    </changeSet>

, где calculate_test. sql выглядит как

CREATE OR REPLACE FUNCTION calculate()
RETURNS int
BEGIN
RETURN 5;
END;

GO

ИЛИ с использованием кода sql непосредственно в

<changeSet author="xxx" id="sql-example">
    <sql dbms="h2"
            endDelimiter="\nGO"
            splitStatements="true"
            stripComments="true">xxx</sql>
</changeSet>

и возникает та же ошибка.

liquibase.exception.MigrationFailedException: Migration failed for change set migrations.xml::calculate_test::zkensche:
 Reason: liquibase.exception.DatabaseException: Syntax error in SQL statement "CREATE OR 

REPLACE FUNCTION[*] CALCULATE()
RETURNS INT
BEGIN
RETURN 5;
END;

GO"; expected "FORCE, VIEW, ALIAS, SEQUENCE, USER, TRIGGER, ROLE, SCHEMA, CONSTANT, DOMAIN, TYPE, DATATYPE, AGGREGATE, LINKED, MEMORY, CACHED, LOCAL, GLOBAL, TEMP, TEMPORARY, TABLE, SYNONYM, PRIMARY, UNIQUE, HASH, SPATIAL, INDEX"; SQL statement: ...

Удалось ли кому-нибудь создать функцию SQL на H2 или это единственный способ написать ее на Java?

Согласно документации не существует команды create CREAT FUNCTION SQL.

Буду благодарен за комментарии, обходные пути и Java отрывки.

С уважением, Зина

...