【问题标题】:Liquibase Stored Procedure throws SQL syntax errorLiquibase 存储过程引发 SQL 语法错误
【发布时间】:2019-11-27 09:22:38
【问题描述】:

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

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

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

程序:

<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]

【问题讨论】:

  • 为什么要删除我打招呼的部分。你好!
  • create procedure 不适用于 H2,所以很可能这就是错误的来源。
  • 好的,谢谢,您知道正确的语法吗?我对 SQL 不是很熟悉...
  • 请注意,存储过程的正确语法是CREATE OR ALTER,而不是用于表的CREATE OR REPLACE

标签: stored-procedures syntax-error liquibase


【解决方案1】:

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

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

谢谢大家

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-11
    • 1970-01-01
    • 2018-03-20
    • 2018-02-16
    • 2018-05-12
    • 2015-12-10
    相关资源
    最近更新 更多