Поскольку мне нужно использовать 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 отрывки.
С уважением, Зина