Memiliki masalah yang sama belum lama ini, bertemu dengan pertanyaan Anda beberapa kali saat mencari solusi di googling, jadi saya rasa saya berhutang budi kepada Anda—inilah temuan saya sejauh ini:
Singkatnya, tidak ada solusi siap untuk itu:jika Anda membuka Semut atau Maven sumber, Anda akan melihat mereka menggunakan pembagi skrip berbasis regexp sederhana yang baik untuk skrip sederhana, tetapi biasanya gagal pada mis. prosedur tersimpan. Cerita yang sama dengan iBATIS, migrasi c5 db, dll.
Masalahnya adalah, ada lebih dari satu bahasa yang terlibat:untuk menjalankan "Skrip SQL" seseorang harus dapat menangani (1) perintah SQL, (2) PL/SQL, dan (3) sqlplus.
Menjalankan sqlplus
itu sendiri memang caranya, tetapi itu menciptakan kekacauan konfigurasi, jadi kami mencoba menghindari opsi ini.
Ada parser ANTLR untuk PL/SQL, seperti Parser Alexander Porcelli —itu sangat dekat, tetapi tidak ada yang menyiapkan solusi drop-in lengkap berdasarkan sejauh ini.
Kami akhirnya menulis pembagi ad hoc lainnya
yang mengetahui beberapa perintah sqlplus seperti /
dan EXIT
— masih jelek, tetapi berfungsi untuk sebagian besar skrip kami. (Perhatikan beberapa skrip, misalnya, dengan --
. di belakang komentar, tidak akan berhasil—itu masih kludge, bukan solusi.)