如何在 Liquibase 格式的 SQL 变更日志中定义参数

Sti*_*tix 3 sql-server liquibase

我有一个像这样写的 SQL

DECLARE @CurrencyIdEUR INT = 1;
INSERT Currency (Id, CurrencyCode) VALUES (@CurrencyIdEUR, 'EUR');
INSERT Price (Price, Currency) VALUES (123.45, @CurrencyIdEUR);
Run Code Online (Sandbox Code Playgroud)

我想将它添加到 Liquibase 格式的 SQL,但我不知道如何添加此类参数。有一个密切的讨论,但不是“如何”部分,他们写的 Liquibase 页面的这里这里,这是可能的,但不是如何。

--liquibase formatted sql

--property name:CurrencyIdEUR value:1

--changeset Stix:123
INSERT Currency (Id, CurrencyCode) VALUES (${CurrencyIdEUR}, 'EUR');
...
Run Code Online (Sandbox Code Playgroud)

这是我最近的尝试。如果你能帮助正确的部分,我会很高兴。

Pet*_*ell 5

TL/DR:它似乎没有为 sql 更改日志实现 - 但属性是从 xml 更改日志文件传递的。

我查看了 FormattedSqlChangeLogParser 的代码,但找不到任何对属性解析的引用。

作为解决方法,您可以在 xml 更改日志文件中输入属性。这也将使该属性可用于所有 sql 脚本。

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<databaseChangeLog ...>

    <property name="CurrencyIdEUR" value="555"/>

    <include relativeToChangelogFile="true" file="DoStuff.sql" />

</databaseChangeLog>
Run Code Online (Sandbox Code Playgroud)

在 DoStuff.sql 中:

--changeset peter.henell:dostuff-procedure endDelimiter:\nGO splitStatements:true
CREATE PROCEDURE DoStuff
AS
BEGIN
    SELECT 1, 2, ${CurrencyIdEUR};
END
Run Code Online (Sandbox Code Playgroud)