2017-07-28 4 views
0

私は、Liquibaseバージョン3.5.3を使用してPL/SQL(Oracle 11gデータベース)を実行する必要がある "フォーマット済みのsql"liquibaseは、Oracle PL/SQLを可能にする複数行のロールバック文を含むsqlファイルです。

チェンジセットはこれを可能にするために "endDelimiter:/"オプションを使用します。

は、SQL フォーマットさ--liquibase --changesetマイク:51.9 endDelimiter:/ /* - '/変更がFIN_PLANSのトリガーを作成' - */ HIST_PKG.TRIG_HIST_TAB( 'FIN_PLANS')をBEGIN; END; /

このチェンジセットのロールバックでは同様にPL/SQLを実行する必要がありますが、多数の検索にもかかわらず、これを行う方法が見つかりません。 複数のロールバック文を指定しようとしましたが、各ロールバック行は個別に(「SQL文」のように)実行され、PL/SQLの「ブロック」であることを認識させる方法はわかりません。

ロールバックでendDelimitorオプションを試しましたが、認識されませんでした。 私は、チェンジセットのendDelimitorオプションもロールバックに適用されると仮定してみましたが、何もありません。

私が欲しいのは

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

私の検索が http://forum.liquibase.org/topic/issue-with-pl-sql-and-rollbacks 上がっている...のようなものである。しかし、この解決策は、 "形式のXML"(ない "形式のSQL")を使用しています。 また、https://liquibase.jira.com/browse/CORE-1608が作成されましたが、これは終了しました。これは、「format xml」で行うこともできます。

PL/SQLコードの呼び出しをサポートする "formated sql"ファイルにliquibaseロールバックを書くことは可能ですか?

答えて

2

仕事の同僚がこの質問に対する回答を見つけました。 "チェンジセットヘッダーに"ロールバック終了区切り文字を設定する必要があります。ドー!

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

私のように苦労していた他の人に役立つことを望みます。

関連する問題