sql >> Base de Datos >  >> RDS >> Oracle

¿Script PL/SQL y SQL en un sqlFile con liquibase?

El "endDelimiter" funciona perfectamente.

El punto y coma en la instrucción SQL produce un "error de carácter no válido", por lo que debe eliminarlo cuando no es un delimitador. (Sí, funciona en PL/SQL y SQL*Plus, al igual que una barra inclinada "/", más :¿Cuándo necesito usar un punto y coma en lugar de una barra inclinada en Oracle SQL? )

Soluciones:

  • endDelimiter ="/"

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

    <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 tal vez;)

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