gpt4 book ai didi

oracle - liquibase 格式的 sql 文件,包含多行回滚语句以允许 Oracle PL/SQL

转载 作者:行者123 更新时间:2023-12-05 01:44:35 27 4
gpt4 key购买 nike

我正在使用 Liquibase 3.5.3 版,编写需要执行 PL/SQL 的“格式化 sql”文件(到我们的 Oracle 11g 数据库)。

变更集使用“endDelimiter:/”选项来允许这样做。

--liquibase格式的sql --changeset mike:51.9 endDelimiter:/ /* -- '为 FIN_PLANS 创建/修改触发器' -- */ 开始 HIST_PKG.TRIG_HIST_TAB('FIN_PLANS'); 结尾; /

此变更集的回滚同样需要执行 PL/SQL,但是尽管进行了多次搜索,我还是找不到执行此操作的方法。我已经尝试指定多个回滚语句,但每个回滚行都是单独执行的(如在“sql 语句”中),我不知道如何让它识别它是一个 PL/SQL“ block ”。

我已经在回滚中尝试了 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但是这个解决方案使用的是“format xml”(不是“format sql”)。还有 https://liquibase.jira.com/browse/CORE-1608已创建,但此后已关闭,因为它还指出可以使用“格式化 xml”来完成。

那么是否可以在支持调用 PL/SQL 代码的“格式化 sql”文件中编写 liquibase 回滚?

最佳答案

一位同事找到了这个问题的答案。您必须“在变更集标题中”设置回滚结束分隔符。呸!

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

希望这能帮助像我一样苦苦挣扎的其他人。

关于oracle - liquibase 格式的 sql 文件,包含多行回滚语句以允许 Oracle PL/SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45364162/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com