当前位置: 首页 > 知识库问答 >
问题:

尝试从.sql脚本创建oracle包时Flyway解析器失败

栾英资
2023-03-14
create or replace package <schema>.custom_package is 
  procedure getReleaseEmployees(p_Cursor in out sys_refcursor, p_Role in string); 
end custom_package;
/

create or replace package <schema>.pck_account_monitoring is
  procedure checkAndLockOracleAccount;
end pck_account_monitoring;
/
<...some more packages following>
SQL State  : 42000
Error Code : 900
Message    : ORA-00900: Invalid SQL Statement
Location   : migrations/sql/V0_2__migration.sql
Line       : 6172
Statement  : end pck_account_monitoring
    at org.flywaydb.core.internal.dbsupport.SqlScript.execute(SqlScript.java:117)
    at org.flywaydb.core.internal.resolver.sql.SqlMigrationExecutor.execute(SqlMigrationExecutor.java:71)
    at org.flywaydb.core.internal.command.DbMigrate.doMigrate(DbMigrate.java:352)
create or replace package quattro.custom_package is procedure getReleaseEmployees(p_Cursor in out sys_refcursor, p_Role in string); end custom_package;
/
<rest as before>
Error Code : 900
Message    : ORA-00900: Invalid SQL Statement
...
Line       : 6167
Statement  : /

create or replace package quattro.pck_account_monitoring is ...

有没有人知道Flyway解析器出了什么问题,或者可以为我提供一个变通方法?

共有1个答案

司徒志
2023-03-14

(这太长了,不适合发表评论,因此,我把它作为一个回答发布出来)

FWIW,我不能复制这个(使用Flyway 3.2.1命令行工具);运行此示例脚本:

-- PACKAGES
create or replace package flyway_demo.custom_package is 
  procedure getReleaseEmployees(p_Cursor in out sys_refcursor, p_Role in string); 
end custom_package;
/

create or replace package flyway_demo.pck_account_monitoring is
  procedure checkAndLockOracleAccount;
end pck_account_monitoring;
/

create or replace package flyway_demo.logger
  authid definer
as
  -- TYPES
  type rec_param is record(
    name varchar2(255),
    val varchar2(4000));

  type tab_param is table of rec_param index by binary_integer;

  g_off constant number := 0;

  function is_number(p_str in varchar2)
      return boolean;
end logger;
/


create or replace package body flyway_demo.pck_account_monitoring is
  procedure checkAndLockOracleAccount is
  begin
    null;
  end;
end pck_account_monitoring;
/

create or replace package body flyway_demo.custom_package is 
  procedure getReleaseEmployees(p_Cursor in out sys_refcursor, p_Role in string)
  is
  begin
    open p_Cursor for select * from dual;
  end;
end custom_package;
/

create or replace package body flyway_demo.logger
as

  function is_number(p_str in varchar2) return boolean is
  begin
    return true;
  end;
end logger;
/

工作非常好。你能用这个脚本试一下,然后把你的发现贴出来吗?

 类似资料:
  • 问题内容: 我想将一个脚本加载到redis中,该脚本将导出将来执行的脚本将依赖的函数,但是尝试定义全局函数失败,对于全局变量也是如此: 如何定义全局函数和变量? 问题答案: 查看文件scripting.c中的源代码 的doc字符串表示意图是将常见错误通知脚本作者(不使用)。 看来这不是安全功能,所以我们有两个解决方案: 可以删除此保护: 或使用:

  • 我在跑步 创建发布包的命令,但我得到以下错误 我试了网上推荐的所有东西,都没用。我完全陷进去了。请帮帮忙。

  • 问题内容: 我会解释一个模糊的标题。 我正在编写一个SQL脚本来为数据库中表的每一行创建一个插入语句,纯粹是为了能够将该数据应用回另一个数据库。 这是我目前所拥有的: 它的效果很好,输出如下: 问题是,如果字段之一为空,则该行将无法生成更新脚本,在输出文件中,该行仅是空白。显然,由于有20多个字段,因此一些可选内容意味着几乎不会生成我的任何脚本。 有没有办法解决这个问题? 问题答案: 对于NULL

  • 我试图在使用OpenJFX的项目上运行jdeps命令,但一直失败。 我正在使用的命令尽可能简化: javafx-jmods-11.0。2是包含OpenJFX jmod文件的目录。 当我运行此命令时,会出现以下错误: 有人有什么想法或建议为什么它找不到位于Y:\javafx-jmods-11.0.2中的javafx.base模块吗?

  • 本文向大家介绍Oracle重建索引Shell脚本、SQL脚本分享,包括了Oracle重建索引Shell脚本、SQL脚本分享的使用技巧和注意事项,需要的朋友参考一下 索引是提高数据库查询性能的有力武器。没有索引,就好比图书馆没有图书标签一样,找一本书自己想要的书比登天还难。然而索引在使用的过程中,尤其是在批量的DML的情形下会产生相应的碎片,以及B树高度会发生相应变化,因此可以对这些变化较大的索引进

  • 问题内容: 项目配置: 数据库-MySQL 5.7 orm-Hibernate 4.3.11.Final / JPA 1.3.1.RELEASE Liquibase 3.4.2 当我仅从Liquibase从workBeanch运行脚本时,我的问题不存在。 我的SQL脚本看起来像这样: 确定并记录: 问题答案: 如果您使用的是yaml文件,则这是配置 确保stripComments应该为false,