Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Script PL/SQL e SQL em um sqlFile com liquibase?


O "endDelimiter" funciona perfeitamente.

O ponto e vírgula na instrução SQL produz "erro de caractere inválido", então você deve removê-lo quando não for um delimitador. (Sim, ele funciona em PL/SQL e SQL*Plus, assim como uma barra "/", mais :Quando preciso usar um ponto e vírgula em vez de uma barra no Oracle SQL? )

Soluções:

  • endDelimiter ="/"
    <changeSet id="1" author="me">
    <sql endDelimiter="/">
        BEGIN
            aud.someProcedure('parameter');
        END;
        /
        insert into test_table(_id, value) VALUES(1, 'test')
    </sql>
    </changeSet>
    

  • duas seções
    <changeSet id="1" author="me">
    <sql endDelimiter="/">
        BEGIN
            aud.someProcedure('parameter');
        END;
    </sql>
    <sql>
        insert into test_table(_id, value) VALUES(1, 'test');
    </sql>
    </changeSet>
    

  • ou talvez;)
    <changeSet id="1" author="me">
    <sql endDelimiter="#Gabor was here#">
        BEGIN
            aud.someProcedure('parameter');
        END;
        #Gabor was here#
        insert into test_table(_id, value) VALUES(1, 'test')
    </sql>
    </changeSet>