Havde det samme problem for ikke så længe siden, stødte ind i dit spørgsmål flere gange, mens jeg googlede efter en løsning, så jeg synes, jeg skylder dig – her er mine resultater indtil videre:
Kort sagt er der ingen færdige løsninger til det:hvis du åbner Ant eller Maven kilder, vil du se, at de bruger en simpel regexp-baseret scriptsplitter, som er fin til simple scripts, men som regel fejler på f.eks. lagrede procedurer. Samme historie med iBATIS, c5 db-migreringer osv.
Problemet er, at der er mere end ét sprog involveret:For at kunne køre "SQL-scripts" skal man være i stand til at håndtere (1) SQL-, (2) PL/SQL- og (3) sqlplus-kommandoer.
Kører sqlplus
i sig selv er måden, men det skaber konfigurationsrod, så vi forsøgte at undgå denne mulighed.
Der er ANTLR-parsere til PL/SQL, såsom Alexandre Porcellis ene —de er meget tætte, men ingen har udarbejdet en komplet drop-in-løsning baseret på dem hidtil.
Vi endte med at skrive endnu en ad hoc-splitter
som er opmærksom på nogle sqlplus-kommandoer som /
og EXIT
— det er stadig grimt, men fungerer til de fleste af vores manuskripter. (Bemærk dog nogle scripts, f.eks. med efterfølgende --
kommentarer, virker ikke – det er stadig en klud, ikke en løsning.)