Oracle
 sql >> Datenbank >  >> RDS >> Oracle

PL/SQL und SQL-Skript in einer sqlDatei mit liquibase?

Der "endDelimiter" funktioniert einwandfrei.

Das Semikolon in der SQL-Anweisung erzeugt einen "Fehler durch ungültige Zeichen", also müssen Sie es entfernen, wenn es kein Trennzeichen ist. (Ja, es funktioniert in PL/SQL und SQL*Plus, genau wie ein Schrägstrich "/", mehr :Wann muss ich in Oracle SQL ein Semikolon oder einen Schrägstrich verwenden? )

Lösungen:

  • endDelimiter ="/"

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

    <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>
    
  • oder vielleicht;)

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