sql - 在 liquibase 上为 H2 数据库创建 SQL 函数
问题描述
由于我需要在 liquibase 中使用 2 个数据库(psql 和 h2),因此我尝试以不同的方式创建 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: ...
有没有人设法在 H2 上创建 SQL 函数,或者它是在 Java 上编写它的唯一方法?
根据文档,没有创建CREAT FUNCTION SQL 命令。
我会感谢评论、变通方法和 Java 代码片段。
最好的,吉娜
解决方案
推荐阅读
- java - SwingNode 在 macOS 上使用 JDK 11.0.6(和其他)显示空白窗口,但不使用 JDK 11.0.2。有解决方法吗?
- terraform - Terraform:有条件地安装 TF 模块
- android - 由于我的应用程序的后台通知导致三星设备上经常崩溃的消息
- android - 在 textview 中设置一些文本粗体,但不是全部
- php - POST 和 GET 在 Postmen 中有效,但 PUT 和 DELETE 无效
- c# - 在 ItemTemplate 字段中使用 C# 转换为 PDF 时出现问题
- python-3.x - 如何在 python 3 中创建一个简单的 HTTP 网络服务器,用生成的内容响应 GET 请求?
- python - Pygame角色移动方向
- regex - 使用 awk 正则表达式匹配字符串的问题
- angular - map() 没有返回我的 REST 调用结果的正确形式