sql >> Database >  >> RDS >> Oracle

voer oracle sql-script uit vanuit java

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.)



  1. SQL Server 2008-pagingmethoden?

  2. mysqli_stmt::bind_param() [mysqli-stmt.bind-param]:aantal variabelen komt niet overeen met aantal parameters

  3. Gemiddelde tijd van bewerkingen die in de database zijn opgeslagen

  4. PHP MySQL-dialoogstroom