Während Liquibase-Funktion, erweiterte ich liquibase.sqlgenerator.core.CreateIndexGenerator Klasse diesen Befehl wie folgtHinzufügen a/als Ende delimeter auf Liquibase Oracle SQL-Anweisung
create index indexI on tableT(columnC)
in etwas zu konvertieren:
declare
index_already_exists exception;
pragma exception_init(index_already_exists, -955);
--
begin
execute immediate 'create index indexI on tableT(columnC)';
exception
when index_already_exists then
dbms_output.put_line('Warning: Index indexI already exists');
end;
, um es idempotent zu machen und einige neue Validierungen zu erstellen.
Es funktioniert einwandfrei bei der Verwendung mvn liquibase: update. Aber beim Generieren der SQL mit mvn liquibase: updateSQL ein abschließendes/(Schrägstrich) fehlt.
Mit Blick auf Liquibase Source fand ich heraus, dass die Klasse LoggingExecutor verwendet zu haben, was ich auf Verfahren benötigen outputStatement
} else if (database instanceof OracleDatabase) {
output.write(StreamUtil.getLineSeparator());
output.write("/");
Ich habe versucht, einen endgültigen/(Schrägstrich) nach dem Ende hinzuzufügen; wenn, aber es so wird:
end;
/;
welche ungültig PLSQL Code
Gibt es eine andere Art und Weise ist der/als Ende delimeter eine endgültige/auf dem SQL-Code erzeugt, oder setzen Sie hinzufügen?