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

Führen Sie das Oracle-SQL-Skript von Java aus

Hatte vor nicht allzu langer Zeit das gleiche Problem, bin beim Googeln nach einer Lösung mehrmals auf Ihre Frage gestoßen, also denke ich, dass ich Ihnen etwas schuldig bin – hier sind meine bisherigen Ergebnisse:

Kurz gesagt, dafür gibt es keine fertigen Lösungen:Wenn Sie Ant oder Maven Quellen, werden Sie sehen, dass sie einen einfachen Regexp-basierten Skript-Splitter verwenden, der für einfache Skripte in Ordnung ist, aber normalerweise z. Gespeicherte Prozeduren. Dasselbe gilt für iBATIS, c5-DB-Migrationen usw.

Das Problem ist, dass mehr als eine Sprache beteiligt ist:Um "SQL-Skripte" auszuführen, muss man in der Lage sein, (1) SQL-, (2) PL/SQL- und (3) sqlplus-Befehle zu handhaben.

Ausführen von sqlplus an sich geht das zwar, aber es schafft Konfigurationschaos, also haben wir versucht, diese Option zu vermeiden.

Es gibt ANTLR-Parser für PL/SQL, wie zum Beispiel Alexandre Porcelli's one – diese sind sehr ähnlich, aber bisher hat niemand eine vollständige Drop-in-Lösung auf der Grundlage dieser entwickelt.

Am Ende schrieben wir noch ein weiterer Ad-hoc-Splitter die einige sqlplus-Befehle wie / kennt und EXIT – es ist immer noch hässlich, funktioniert aber für die meisten unserer Skripte. (Beachten Sie jedoch einige Skripte, z. B. mit nachgestelltem -- Kommentare, wird nicht funktionieren – es ist immer noch ein Flickwerk, keine Lösung.)