Oracle
 sql >> Database >  >> RDS >> Oracle

Script PL/SQL e SQL in un sqlFile con liquibase?

"endDelimiter" funziona perfettamente.

Il punto e virgola nell'istruzione SQL produce "errore di carattere non valido", quindi è necessario rimuoverlo quando non è un delimitatore. (Sì, fa il suo lavoro in PL/SQL e SQL*Plus, proprio come una barra "/", altro :Quando è necessario utilizzare un punto e virgola rispetto a una barra in Oracle SQL? )

Soluzioni:

  • endDelimiter ="/"

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

    <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>
    
  • o forse;)

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