我有一个像这样编写的SQL
DECLARE @CurrencyIdEUR INT = 1;
INSERT Currency (Id, CurrencyCode) VALUES (@CurrencyIdEUR, 'EUR');
INSERT Price (Price, Currency) VALUES (123.45, @CurrencyIdEUR);
我想将它添加到Liquibase格式的SQL中,但我不知道如何添加这种类型的参数。有一个密切的讨论,但不是他们写的“如何”-part,here和here on the Liquibase page,这是可能的,但不是如此。
--liquibase formatted sql
--property name:CurrencyIdEUR value:1
--changeset Stix:123
INSERT Currency (Id, CurrencyCode) VALUES (${CurrencyIdEUR}, 'EUR');
...
这是我最近的尝试。如果你能提供正确的零件,我将非常高兴。
答案 0 :(得分:3)
TL / DR:看起来它没有为sql changelogs实现 - 但属性是从xml changelogfile传递的。
我查看了FormattedSqlChangeLogParser的代码,找不到任何对属性解析的引用。
作为解决方法,您可以在xml changelog文件中输入属性。这也将使该属性可用于所有sql脚本。
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<databaseChangeLog ...>
<property name="CurrencyIdEUR" value="555"/>
<include relativeToChangelogFile="true" file="DoStuff.sql" />
</databaseChangeLog>
在DoStuff.sql中:
--changeset peter.henell:dostuff-procedure endDelimiter:\nGO splitStatements:true
CREATE PROCEDURE DoStuff
AS
BEGIN
SELECT 1, 2, ${CurrencyIdEUR};
END
答案 1 :(得分:3)
This feature has been added in Liquibase 3.5.0, which was released today (April 21, 2016)