【问题标题】:Flyway error on dependent type declarations within package declaration DDL in OracleOracle 中包声明 DDL 中依赖类型声明的 Flyway 错误
【发布时间】:2019-01-21 13:29:15
【问题描述】:

我想知道为什么 flyway 不能执行这个包声明。我应该改变什么? 编辑:已解决。

CREATE OR REPLACE EDITIONABLE PACKAGE "POSITION_REPORTING"."POSREP_FLYWAY_TEST" AS 

 TYPE FLYWAY_REPORT_HEADER IS RECORD
 (
    VERSION_NUMBER  VARCHAR2(100),
    VERSION_NOTES   VARCHAR2(100)
 );
 
 TYPE FLYWAY_REPORT_HEADER_TAB IS TABLE OF FLYWAY_REPORT_HEADER;

END POSREP_FLYWAY_TEST;

代码确实从 SQL-Developer 执行,没有问题。 Flyway 告诉我它不能执行第二种类型的声明。这种类型取决于第一种类型,所以我的假设是缺少某种提交。不过,我不知道在包声明中的何处添加它。

有什么想法吗?

【问题讨论】:

  • Flyway 是否适用于任何其他存储的 PL/SQL?我刚刚找到the documentation,它只提到了对“带有语句分隔符的标准SQL 语法”“PL/SQL 块的支持,这些块以DECLARE 或BEGIN 开头并以END 结尾;/” i>.
  • 在下面答案的 cmets 中,您会看到 @lukasz-szozda 成功迁移了此代码。

标签: oracle flyway


【解决方案1】:

我会尝试添加分隔符/:

CREATE OR REPLACE EDITIONABLE PACKAGE "POSITION_REPORTING"."POSREP_FLYWAY_TEST"
AS 
 TYPE FLYWAY_REPORT_HEADER IS RECORD
 (
    VERSION_NUMBER  VARCHAR2(100),
    VERSION_NOTES   VARCHAR2(100)
 );


TYPE FLYWAY_REPORT_HEADER_TAB IS TABLE OF FLYWAY_REPORT_HEADER;

END "POSREP_FLYWAY_TEST";
/

【讨论】:

  • 你说得对,我在这里的代码中迷路了。但它在我使用的 flyway 脚本中 - 这是 SQL-Developer 在导出时自动添加的内容。所以你的回答不能解决我的问题。我的假设是我必须在两个声明之间添加一些类似斜线的东西。
  • @JohanSteunenberg 请发布您的整个代码 + 确切的错误消息。
  • 您发布了我的完整代码。这是错误消息: --------------------------------------------- -------------------------- SQL 状态:42000 错误代码:900 消息:ORA-00900:无效的 SQL 语句位置:xxxxxxxxxxxxxxxxxx 行:22 语句: TYPE FLYWAY_REPORT_HEADER_TAB IS TABLE OF FLYWAY_REPORT_HEADER 构建步骤“执行 Windows 批处理命令”将构建标记为失败
  • @JohanSteunenberg 奇怪我刚刚运行了准确的代码,一切都成功迁移了。
  • 已解决!关键字“EDITIONABLE”是问题所在!当我看到你的重写时,它让我大吃一惊,非常感谢,@lLukaszSzozda
【解决方案2】:

我们的设置不接受关键字“EDITIONABLE”。 这有效:

CREATE OR REPLACE EDITIONABLE PACKAGE "POSITION_REPORTING"."POSREP_FLYWAY_TEST"
AS 
  TYPE FLYWAY_REPORT_HEADER IS RECORD
  (
    VERSION_NUMBER  VARCHAR2(100),
    VERSION_NOTES   VARCHAR2(100)
  );


  TYPE FLYWAY_REPORT_HEADER_TAB IS TABLE OF FLYWAY_REPORT_HEADER;

END "POSREP_FLYWAY_TEST";
/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-03
    相关资源
    最近更新 更多