【问题标题】:flyway db2 create procedureflyway db2 创建过程
【发布时间】:2013-01-15 12:40:50
【问题描述】:

我正在使用 flyway commandline 2.0.3 迁移 db2 LUW 数据库。它适用于保存创建表语句等的各种脚本。但我无法执行创建过程语句。 begin-end 块似乎处理错误。

SET CURRENT SCHEMA = DB2INST1;

SET CURRENT PATH = SYSIBM,SYSFUN,SYSPROC,SYSIBMADM,DB2INST1;

CREATE OR REPLACE PROCEDURE ${schema_name_node}.SP_E_H_A_D_V (
    IN "@M" VARCHAR(15000),
    IN "@S" TIMESTAMP,
    IN "@E" TIMESTAMP,
    IN "@T" DECIMAL(4, 2) )
  SPECIFIC "SP_E_H_A_D_V"
  DYNAMIC RESULT SETS 1
  LANGUAGE SQL
  NOT DETERMINISTIC
  NO EXTERNAL ACTION
  READS SQL DATA
  CALLED ON NULL INPUT
  INHERIT SPECIAL REGISTERS
  OLD SAVEPOINT LEVEL
BEGIN 
DECLARE V_MINUTES INTEGER DEFAULT 0;
...

这是迁移命令的输出:

 D:\flyway-commandline-2.0.3-dist\flyway-commandline-2.0.3>flyway.cmd migrate
Flyway (Command-line Tool) v.2.0.3

Current schema version: 1.13.1.201211151200.04.000
Migrating to version 1.13.1.201212101200.04.000
ERROR: com.googlecode.flyway.core.api.FlywayException: Error executing statement
 at line 5: CREATE OR REPLACE PROCEDURE JUDITH_NODE.SP_E_H_A_D_V
 (
    IN "@M"     VARCHAR(15000),
    IN "@S"     TIMESTAMP,
    IN "@E"     TIMESTAMP,
    IN "@T"     DECIMAL(4, 2) )
  SPECIFIC "SP_E_H_A_D_V"
  DYNAMIC RESULT SETS 1
  LANGUAGE SQL
  NOT DETERMINISTIC
  NO EXTERNAL ACTION
  READS SQL DATA
  CALLED ON NULL INPUT
  INHERIT SPECIAL REGISTERS
  OLD SAVEPOINT LEVEL
BEGIN
DECLARE V_MINUTES INTEGER DEFAULT 0
ERROR: Caused by com.ibm.db2.jcc.am.ro: DB2 SQL Error: SQLCODE=-104, SQLSTATE=42
601, SQLERRMC=END-OF-STATEMENT;ES INTEGER DEFAULT 0;<psm_semicolon>, DRIVER=3.58
.82
ERROR: FlywayException: Migration to version 1.13.1.201212101200.04.000 failed!
Changes successfully rolled back.
ERROR: Occured in com.googlecode.flyway.core.migration.DbMigrator.applyMigration
() at line 266

我发现了与hsqlflyway 1.7 类似的问题。

有没有办法处理 db2-database 的问题?

【问题讨论】:

    标签: db2 flyway


    【解决方案1】:

    目前尚不支持。请在Issue Tracker 中提出改进请求。确保包含一个包含 CREATE PROCEDURE 语句的脚本,以便我可以确保您的案例已被测试覆盖。

    【讨论】:

      【解决方案2】:

      通过使用在块内的语句的分号后立即添加注释的技巧,我们已经能够解决 DB2 flyway 脚本的大多数 BEGIN/END 块问题。

      BEGIN
        Statment1;--
        Statment2;--
        Statment3;--
      END;
      

      这在使用 DB2 CLP 和 JDBC 应用脚本时有效。

      【讨论】:

        猜你喜欢
        • 2013-04-03
        • 1970-01-01
        • 2015-12-11
        • 2013-07-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-03-17
        • 1970-01-01
        相关资源
        最近更新 更多