我使用 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
。
我确实找到了有关如何执行您正在寻找的操作的信息:
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/