Процедура не может создать выполнение из Urban Code Deploy - PullRequest
0 голосов
/ 28 июня 2018

У меня возникли проблемы со следующим скриптом, который я пытаюсь выполнить. В SQLDeveloper или других инструментах, таких как DataGrip, все работает нормально, так что, на мой взгляд, это проблема UCD.

...more inserts
insert into M_MIGRATION_CONTROL values ('PRODUCTREL', 'M_' || 'PRODUCTREL');

CREATE OR REPLACE PROCEDURE MIGRATE_DATA_BEFORE_DEPLOY IS
  TABLE_NAME VARCHAR2(128);
  MIGRATION_TABLE_NAME VARCHAR2(128);
  CURSOR MIGRATION_CURSOR IS SELECT * FROM M_MIGRATION_CONTROL;
  BEGIN
    OPEN MIGRATION_CURSOR;
    LOOP
      FETCH MIGRATION_CURSOR INTO TABLE_NAME, MIGRATION_TABLE_NAME;
      EXIT WHEN MIGRATION_CURSOR%NOTFOUND;
      EXECUTE IMMEDIATE 'CREATE TABLE '||MIGRATION_TABLE_NAME||' AS SELECT * FROM '||TABLE_NAME||'';
    END LOOP;
    CLOSE MIGRATION_CURSOR;
  END MIGRATE_DATA_BEFORE_DEPLOY;
/

insert into A_ACCEPTEDINCOMETYPEOPTION select * from M_A_ACCEPTEDINCOMETYPEOPTION;
insert into A_INSTALMENT select * from M_A_INSTALMENT;
...more inserts


с ошибками:

[sql] Failed to execute:  MIGRATION_TABLE_NAME VARCHAR2(128)
      [sql] java.sql.SQLSyntaxErrorException: ORA-00900: invalid SQL statement
      [sql] Failed to execute:  CURSOR MIGRATION_CURSOR IS SELECT * FROM M_MIGRATION_CONTROL


Когда я печатаю тело процедуры из Oracle, я получаю:

PROCEDURE MIGRATE_DATA_BEFORE_DEPLOY IS TABLE_NAME VARCHAR2(128)

Поэтому я думаю, что клиент заканчивается create procedure после первого ;

Можете ли вы мне помочь / посоветовать, как должен выглядеть этот скрипт для правильного выполнения?

(Oracle 12.1)

1 Ответ

0 голосов
/ 28 июня 2018

Вы используете плагин SQL-JDBC для Urban Code Deploy.

Согласно их документации / устранению неисправностей :

Плагин SQL-JDBC не поддерживает развертывание хранимых процедур.

Существует отдельный SQL * Plus плагин , который вы можете использовать вместо него.

...