1

flyway commandline 2.0.3db2 LUW データベースの移行に使用しています。create table ステートメントなどを保持するさまざまなスクリプトでは問題なく動作しますが、create procedure ステートメントを実行できません。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

hsqlとの同様の問題に対する質問を見つけましたflyway 1.7

db2-database の問題を処理する方法はありますか?

4

2 に答える 2

1

これはまだサポートされていません。Issue Trackerで拡張リクエストを提出してください。あなたのケースがテストでカバーされていることを確認できるように、CREATE PROCEDURE ステートメントを含むスクリプトを必ず含めてください。

于 2013-01-15T15:15:42.753 に答える
0

ブロック内のステートメントのセミコロンの直後にコメントを追加するというトリックを使用することで、DB2 flyway スクリプトの BEGIN/END ブロックの問題のほとんどを回避することができました。

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

これは、DB2 CLP と JDBC を使用してスクリプトを適用する場合に機能します。

于 2013-09-04T15:00:22.363 に答える