使用 SQLcl 运行时将参数传递给 Liquibase 变更集

问题描述 投票:0回答:1

我使用 SQLcl + Liquibase 将更改部署到 Oracle 数据库。我有以下 YAML 格式的变更集(用于编译

utils_pkg
的包规范:

  - changeSet:
      id: ${changesetOwner}.utils_pkg_s
      author: def_author
      runOnChange: true
      changes:
        - sqlFile:
            path: utils_pkg_s.sql
            splitStatements: true
            endDelimiter: /
            relativeToChangelogFile: true

当前要传递

changesetOwner
的值,我必须动态生成属性文件并通过以下方式调用
liquibase update
传递属性文件:

lb update -default-schema-name ORDERS -changelog-file main.yaml -defaults-file deployment.properties -liquibase-schema-name DEPLOYMENT

此方法对我来说效果很好,但生成属性文件似乎是一种开销。例如,是否有机会传递替换参数,然后以相同的方式使用它?像这样的东西(假设它是一些sql脚本内容):

define changesetOwner = ORDERS
lb update -default-schema-name ORDERS -changelog-file main.yaml -liquibase-schema-name DEPLOYMENT

然后以某种方式联系

changesetOwner

oracle liquibase sqlcl
1个回答
0
投票

我确实找到了有关如何执行您正在寻找的操作的信息:

SQL> set property changesetOwner MY_SCHEMA
SQL> lb update -default-schema-name ORDERS -changelog-file main.yaml -liquibase-schema-name DEPLOYMENT

参考:https://oradbdev.mathiasmagnusson.com/2021/03/02/custom-properties-in-sqlcl-the-easy-way/

© www.soinside.com 2019 - 2024. All rights reserved.