使用oracle pl/sql函数进行液化迁移得到PLS-00103

使用oracle pl/sql函数进行液化迁移得到PLS-00103,oracle,liquibase,Oracle,Liquibase,我试图添加简单的oracle函数,在SQLDeveloper中它可以编译并工作,但当我将其添加到liquibase迁移中时,迁移失败 CREATE OR REPLACE FUNCTION test_func (test_param IN VARCHAR2 ) RETURN INT IS test_var INT; BEGIN RETURN 0; EXCEPTION WHEN OTHERS THEN RAISE; END test_func; / 迁移时出错 [E

我试图添加简单的oracle函数,在SQLDeveloper中它可以编译并工作,但当我将其添加到liquibase迁移中时,迁移失败

CREATE OR REPLACE FUNCTION test_func
  (test_param       IN VARCHAR2
  ) RETURN INT
IS
  test_var INT;
BEGIN
  RETURN 0;
EXCEPTION
WHEN OTHERS THEN
  RAISE;
END test_func;
/
迁移时出错

[ERROR] Failed to execute goal org.liquibase:liquibase-maven-plugin:2.0.3:update (liquibase) on project tools-liquibase: Error setting up or running Liquibase: Migration failed for change set .....
[ERROR] Reason: liquibase.exception.DatabaseException: Error executing SQL BEGIN
[ERROR] RETURN 0: ORA-06550: line 2, column 10:
[ERROR] PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following:
PS:找到解决方案,应在liquibase变更集中为sqlFile或sql添加endDelimiter=“/”,如

<changeSet id="..." author="andymur" logicalFilePath="">
        <comment></comment>
        <sqlFile endDelimiter="/"
                path="my.sql"/>
</changeSet>


如果只在SQL文件中放入一个过程,而没有最后的
/
,然后使用
splitStatements=“false”
这很有效,请尝试将endDelimiter更改为
endDelimiter=“\n/”
请将解决方案作为答案发布。编辑问题以包含解决方案对未来的搜索者没有帮助,因为它隐藏了这个问题有答案的事实。