2016-04-21 9 views
2

ich eine SQL bin, die wie dieseWie definieren Parameter in Liquibase Formatiert SQL Changelogs

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

, dass zu einer Liquibase formatiert SQL hinzufügen Ich möchte geschrieben, aber ich weiß nicht, wie eine solche hinzufügen Art von Parametern. Es gibt eine enge Diskussion, aber nicht die "wie" -Teil, here und here on the Liquibase page schreiben sie, das ist es möglich, aber nicht wie.

--liquibase formatted sql 

--property name:CurrencyIdEUR value:1 

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

Das ist mein letzter Versuch. Ich würde mich sehr freuen, wenn Sie mit den richtigen Teilen helfen könnten.

Antwort

3

TL/DR: Es scheint, als wäre es nicht für sql changelogs implementiert - aber Eigenschaften werden von der xml changelogfile übergeben.

Ich schaute in den Code des FormattedSqlChangeLogParser und konnte keine Verweise auf das Parsen von Eigenschaften finden.

Als Workaround können Sie die Eigenschaften in der XML-Changelog-Datei eingeben. Dadurch wird die Eigenschaft auch für alle sql-Skripte verfügbar.

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

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

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

</databaseChangeLog> 

In DoStuff.sql:

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

Tests, die gerade jetzt! Danke schon. – Stix

3

Diese Funktion in Liquibase 3.5.0 hinzugefügt wurde, die heute veröffentlicht wurde (21. April 2016)

+0

Was ist die Syntax? –

+0

Könnten Sie bitte beschreiben, über welche Funktion Sie etwas detaillierter sprechen? Vielleicht auch mit einem Beispiel? – Stix

+0

Siehe diese Ankündigung für weitere Details: http://us2.campaign-archive1.com/?u=c24cd4e0098d3017cc468c324&id=48a133352d&e=6ca7733538 Es scheint nicht, dass die Dokumentation jedoch noch aktualisiert wurde. Ich denke, die Syntax ist wahrscheinlich wie in der Frage gezeigt. – SteveDonie