2016-04-21 75 views
2

我有它是這樣寫的如何Liquibase格式化SQL更新日誌定義參數

DECLARE @CurrencyIdEUR INT = 1; 
INSERT Currency (Id, CurrencyCode) VALUES (@CurrencyIdEUR, 'EUR'); 
INSERT Price (Price, Currency) VALUES (123.45, @CurrencyIdEUR); 

我想將它添加到Liquibase格式化SQL一個SQL,但是我不知道如何添加這樣的種類的參數。有一個密切的討論,但不是他們寫的「如何」 - 部分,herehere on the Liquibase page,這是可能的,但不是如何。

--liquibase formatted sql 

--property name:CurrencyIdEUR value:1 

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

這是我最近的嘗試。如果你能幫助正確的部分,我會非常高興。

回答

3

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> 

在DoStuff.sql:

--changeset peter.henell:dostuff-procedure endDelimiter:\nGO splitStatements:true 
CREATE PROCEDURE DoStuff 
AS 
BEGIN 
    SELECT 1, 2, ${CurrencyIdEUR}; 
END 
+0

測試是否正確吧!謝謝。 – Stix

3

此功能已在Liquibase 3.5.0,這是今天公佈的增加了(2016年4月21日)

+0

語法是什麼? –

+0

您能否介紹一下您正在談論的功能更詳細一些?也許有一個例子呢? – Stix

+0

查看本公告以獲取更多詳細信息: http://us2.campaign-archive1.com/?u=c24cd4e0098d3017cc468c324&id=48a133352d&e=6ca7733538 儘管如此,文檔並未出現更新。我認爲語法可能與問題中所示的一樣。 – SteveDonie