Сбой Flyway, когда одна процедура вызывает другую, в DB2 - PullRequest
0 голосов
/ 25 февраля 2019

Следующий бит SQL завершается неудачно с flyway v5.1.3 для DB2 LUW 10.5, но он работает, когда выполняется непосредственно в DB2 с использованием клиента.

Сообщение об ошибке:

"Ошибка SQL DB2: SQLCODE = -440, SQLSTATE = 42884, SQLERRMC = TEST_STATUS; ПРОЦЕДУРА, ДРАЙВЕР = 4.19.26"

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

.Кто-нибудь знает обходной путь или исправить?

    CREATE OR REPLACE PROCEDURE TEST_STATUS
  (
    IN a INTEGER,
    INOUT b INTEGER,
    INOUT c INTEGER,
    INOUT d INTEGER
  )
  BEGIN


  END;


CREATE OR REPLACE PROCEDURE TEST_STATUS_MAIN
  (
    IN a    INTEGER,
    IN b INTEGER,
    IN c    INTEGER,
    OUT d BIGINT
  )
  BEGIN
    DECLARe e INTEGER DEFAULT 0;

    CALL TEST_STATUS(a, b, c, e);


  END;

1 Ответ

0 голосов
/ 25 февраля 2019

Это может произойти, если CURRENT SCHEMA отсутствует в списке CURRENT PATH для сеанса.
Допустим,
VALUES CURRENT SCHEMA возвращает SCHEMA1
VALUES CURRENT PATH возвращает "SYSIBM","SYSFUN","SYSPROC","SYSIBMADM","SCHEMA2".
Подпрограмма TEST_STATUS создается в схеме SCHEMA1, и ее пытаются найти в списке "SYSIBM","SYSFUN","SYSPROC","SYSIBMADM","SCHEMA2" при попытке создать TEST_STATUS_MAIN.

...