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)
这是我最近的尝试。如果你能帮助正确的部分,我会很高兴。
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)