Tuve el mismo problema no hace mucho, me topé con tu pregunta varias veces mientras buscaba una solución en Google, así que creo que te lo debo. Estos son mis hallazgos hasta ahora:
En resumen, no hay soluciones listas para eso:si abre Ant o Maven fuentes, verá que están usando un simple divisor de secuencias de comandos basado en expresiones regulares que está bien para secuencias de comandos simples, pero generalmente falla, p. procedimientos almacenados. Misma historia con iBATIS, migraciones c5 db, etc.
El problema es que hay más de un idioma involucrado:para ejecutar "secuencias de comandos SQL", uno debe ser capaz de manejar (1) comandos SQL, (2) PL/SQL y (3) sqlplus.
Ejecutando sqlplus
en sí mismo es el camino, pero crea problemas de configuración, por lo que tratamos de evitar esta opción.
Hay analizadores ANTLR para PL/SQL, como el de Alexandre Porcelli —esos son muy parecidos, pero nadie preparó una solución completa basada en ellos hasta ahora.
Terminamos escribiendo otro divisor ad hoc
que es consciente de algunos comandos sqlplus como /
y EXIT
— todavía es feo, pero funciona para la mayoría de nuestros scripts. (Tenga en cuenta que algunos scripts, por ejemplo, con --
al final comentarios, no funcionará; sigue siendo una chapuza, no una solución).