При использовании функции LiquiBase, я расширенный класс liquibase.sqlgenerator.core.CreateIndexGenerator преобразовать эту командуДобавление/как конечный разделители на заявление LiquiBase Oracle SQL
create index indexI on tableT(columnC)
во что-то вроде этого:
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;
, чтобы сделать его идемпотентным и создать несколько новых утверждений.
Он отлично работает при использовании mvn liquidibase: обновите. Но при генерации SQL с использованием mvn liquidibase: updateSQL отсутствует окончательная/(косая черта).
Глядя на LiquiBase исходный код я узнал, что класс LoggingExecutor используется, чтобы иметь то, что мне нужно по методу outputStatement
} else if (database instanceof OracleDatabase) {
output.write(StreamUtil.getLineSeparator());
output.write("/");
Я пытался добавить последний/(слэш) после конца; если, но это становится так:
end;
/;
который недействителен код PLSQL
Есть ли другой способ, чтобы добавить заключительный/на SQL сгенерированный код, или установить в/в качестве конечного разделителя?