sql >> Databáze >  >> RDS >> Oracle

spusťte skript Oracle SQL z jazyka Java

Měl jsem před nedávnem stejný problém, několikrát jsem narazil na vaši otázku, když jsem hledal řešení, takže si myslím, že vám dlužím – zde jsou moje dosavadní zjištění:

Stručně řečeno, neexistují pro to žádná připravená řešení:pokud otevřete Ant nebo Maven zdrojů, uvidíte, že používají jednoduchý rozdělovač skriptů založený na regulárních výrazech, který je vhodný pro jednoduché skripty, ale obvykle selže např. uložené procedury. Stejný příběh s iBATIS, migrace c5 db atd.

Problém je v tom, že se jedná o více než jeden jazyk:aby bylo možné spouštět "SQL skripty", musí být člověk schopen zpracovat (1) SQL, (2) PL/SQL a (3) příkazy sqlplus.

Spuštění sqlplus sám o sobě je skutečně cestou, ale vytváří konfigurační nepořádek, takže jsme se této možnosti snažili vyhnout.

Pro PL/SQL existují analyzátory ANTLR, jako je Alexandre Porcelli —jsou si velmi blízké, ale zatím na nich nikdo nepřipravil kompletní drop-in řešení.

Nakonec jsme napsali ještě další ad hoc rozdělovač který si je vědom některých příkazů sqlplus jako / a EXIT — je to stále ošklivé, ale funguje pro většinu našich skriptů. (Všimněte si, že některé skripty, např. s koncovým -- komentáře, nebude fungovat – je to stále jen spletitost, nikoli řešení.)



  1. Sekvence hibernace nextVal vyřešena, ale není použita (Oracle)

  2. MySql vybírá výchozí hodnotu, pokud nejsou žádné výsledky?

  3. Skrýt duplicitní výsledky v dotazu MySQL

  4. Cizí klíč s více sloupci:Nastavte jeden sloupec na hodnotu Null ON DELETE namísto všech