2017-07-28 7 views
0

J'utilise la version 3.5.3 de Liquibase, en écrivant des fichiers «formatés sql» qui doivent exécuter PL/SQL (vers notre base de données Oracle 11g).fichier sql formaté liquibase contenant des instructions rollback multilignes pour autoriser Oracle PL/SQL

Le changeset utilise l'option "endDelimiter: /" pour autoriser cela.

--liquibase sql --changeset formaté mike: 51,9 endDelimiter:/ /* - 'Créer/Modifier déclenche pour FIN_PLANS' - */ BEGIN HIST_PKG.TRIG_HIST_TAB ('FIN_PLANS'); END; L'annulation pour ce changeset doit également exécuter PL/SQL, mais malgré de nombreuses recherches, je ne trouve pas de moyen de le faire. J'ai essayé de spécifier plusieurs instructions rollback, mais chaque ligne de rollback est exécutée individuellement (comme dans "sql statements") et je ne sais pas comment lui faire reconnaître qu'il s'agit d'un "bloc" PL/SQL.

J'ai essayé l'option endDelimitor sur la restauration mais elle n'est pas reconnue. J'ai essayé de supposer que l'option endDelimitor pour le changeset s'applique également à la restauration, mais hélas non.

Ce que je veux quelque chose comme ...

--liquibase formatted sql 
--changeset mike:51.9 endDelimiter:/ 
/* -- 'Create/Modify triggers for FIN_PLANS' -- */ 
BEGIN 
    HIST_PKG.TRIG_HIST_TAB('FIN_PLANS'); 
END; 
/
--rollback endDelimiter:/ 
--rollback BEGIN 
--rollback HIST_PKG.TRIG_HIST_TAB('FIN_PLANS'); 
--rollback END; 
--rollback/

Mes recherches ont été retrouvés http://forum.liquibase.org/topic/issue-with-pl-sql-and-rollbacks Mais cette solution utilise "le format xml" (et non "le format sql"). https://liquibase.jira.com/browse/CORE-1608 a également été créé, mais il a été fermé depuis, car il indique également qu'il peut être fait avec "format xml".

Est-il donc possible d'écrire des rollbacks de type liquibase dans des fichiers "formated sql" prenant en charge l'appel de code PL/SQL?

Répondre

2

Un collègue de travail a trouvé une réponse à cette question. Vous devez définir le délimiteur de fin d'annulation "dans l'en-tête de l'ensemble de modifications". Doh!

--liquibase formatted sql 
--changeset mike:51.9 endDelimiter:/ rollbackEndDelimiter:/ 
/* -- 'Create/Modify triggers for FIN_PLANS' -- */ 
BEGIN 
    HIST_PKG.TRIG_HIST_TAB('FIN_PLANS'); 
END; 
/
--rollback BEGIN 
--rollback HIST_PKG.TRIG_HIST_TAB('FIN_PLANS'); 
--rollback END; 
--rollback/

Espoir qui aide quelqu'un d'autre qui luttait comme moi.