Had niet zo lang geleden hetzelfde probleem, kwam je vraag verschillende keren tegen terwijl je googelde naar een oplossing, dus ik denk dat ik je iets schuldig ben - hier zijn mijn bevindingen tot nu toe:
Kortom, daar zijn geen pasklare oplossingen voor:als je Ant of Maven bronnen, zult u zien dat ze een eenvoudige op regexp gebaseerde scriptsplitter gebruiken die prima is voor eenvoudige scripts, maar meestal faalt op b.v. opgeslagen procedures. Hetzelfde verhaal met iBATIS, c5 db-migraties, enz.
Het probleem is dat er meer dan één taal bij betrokken is:om "SQL-scripts" uit te voeren, moet men (1) SQL-, (2) PL/SQL- en (3) sqlplus-commando's kunnen verwerken.
sqlplus
uitvoeren zelf is inderdaad de manier, maar het zorgt voor configuratie-rommel, dus we hebben geprobeerd deze optie te vermijden.
Er zijn ANTLR-parsers voor PL/SQL, zoals die van Alexandre Porcelli -die zijn heel dichtbij, maar niemand heeft een complete drop-in-oplossing voorbereid op basis van die tot nu toe.
Uiteindelijk schreven we nog een andere ad hoc splitter
die op de hoogte is van enkele sqlplus-commando's zoals /
en EXIT
— het is nog steeds lelijk, maar werkt voor de meeste van onze scripts. (Let wel op sommige scripts, bijv. met --
achteraan opmerkingen, zal niet werken - het is nog steeds een kludge, geen oplossing.)