2017-07-28 1 views
0

Ich benutze Liquibase Version 3.5.3, schreiben "formatierte SQL" -Dateien, die PL/SQL ausführen müssen (zu unserer Oracle 11g Datenbank).liquibase formatierte SQL-Datei mit mehrzeiligen Rollback-Anweisungen für Oracle PL/SQL

Das Änderungsset verwendet die Option "endDelimiter: /", um dies zu ermöglichen.

--liquibase SQL formatiert --changeset mike: 51,9 endDelimiter:/ /* - 'Create/Modify für FIN_PLANS löst' - */ BEGIN HIST_PKG.TRIG_HIST_TAB ('FIN_PLANS'); ENDE; /

Das Rollback für dieses Changeset muss ebenfalls PL/SQL ausführen, aber trotz zahlreicher Suchen kann ich keinen Weg finden, dies zu tun. Ich habe versucht, mehrere Rollback-Anweisungen angeben, aber jede Rollback-Zeile wird einzeln ausgeführt (wie in "SQL-Anweisungen") und ich weiß nicht, wie es erkennen, es ist ein PL/SQL- "Block".

Ich habe die Option endDelimitor auf dem Rollback versucht, aber es wird nicht erkannt. Ich habe versucht, davon auszugehen, dass die Option endDelimitor für den Änderungssatz auch für den Rollback gilt, aber leider nein.

Was ich will, ist so etwas wie ...

--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/

Meine Recherchen gedreht haben bis http://forum.liquibase.org/topic/issue-with-pl-sql-and-rollbacks Aber diese Lösung wird unter Verwendung von "Format xml" (nicht "Format SQL"). Auch https://liquibase.jira.com/browse/CORE-1608 wurde erstellt, aber das ist seither geschlossen worden, da es auch darauf hinweist, dass es mit "format xml" gemacht werden kann.

So ist es möglich, Liquibase-Rollbacks in "formatierten SQL" -Dateien zu schreiben, die den Aufruf von PL/SQL-Code unterstützen?

Antwort

2

Ein Arbeitskollege hat eine Antwort auf diese Frage gefunden. Sie müssen den Rollback-Endbegrenzer "im ChangeSet-Header" festlegen. Do!

--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/

Hoffen, dass das hilft jedem anderen, der wie ich kämpfte.

Verwandte Themen