Oracle
 sql >> Base de données >  >> RDS >> Oracle

Script PL/SQL et SQL dans un sqlFile avec liquibase ?

Le "endDelimiter" fonctionne parfaitement.

Le point-virgule dans l'instruction SQL produit une "erreur de caractère non valide", vous devez donc le supprimer lorsqu'il ne s'agit pas d'un délimiteur. (Oui, il fait son travail en PL/SQL et SQL*Plus, tout comme une barre oblique "/", plus :Quand dois-je utiliser un point-virgule plutôt qu'une barre oblique dans Oracle SQL ? )

Solution :

  • endDelimiter ="/"

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

    <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 peut-être;)

    <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>