JDBC: Rückgabe mehrerer Ergebnismengen über einen einzigen Datenbankaufruf - funktioniert nicht für Oracle

8

Dieser Beitrag zeigte die Ausführung mehrerer Abfragen in einem einzelnen JDBC-Aufruf (gegen eine SQL Server-Datenbank) ) indem Sie sie mit Semikolons trennen. Als ich versuchte, dasselbe mit Oracle 10G zu machen, stützte sich ein Fehler "ungültiges Zeichen":

%Vor%

Was mache ich falsch?

    
Daud 14.12.2011, 11:53
quelle

2 Antworten

7

Sie tun nichts falsches (außer anzunehmen, dass alle DBMS gleich funktionieren)

Oracle (und sein JDBC-Treiber) unterstützt dies einfach nicht.

Sie müssen jeden SELECT einzeln ausführen.

Übrigens: Das ist einer der Gründe, warum einige SQL-Injection-Angriffe nicht mit Orace funktionieren - besonders nicht mit den berühmten " kleinen Bobby-Tischen "Karikatur.

    
a_horse_with_no_name 14.12.2011, 11:59
quelle
1

Es ist möglich, in einem einzigen Aufruf mehrere Ergebnismengen von Oracle in JDBC zurückzuversetzen. Es gibt ein paar Möglichkeiten, dies zu tun; ein guter Beitrag bei Oracle-Base zeigt, wie .

Der von mir verwendete Mechanismus besteht darin, in einer aufrufbaren Anweisung einen anonymen Block zu erstellen und dann für jede Ergebnismenge einen SYS_REFCURSOR als Ausgabeparameter zu binden.

Hier ist ein Code, der genau das tut. Es ist faul für die Fehlerbehandlung, aber es bekommt die Idee über:

%Vor%

Ich hoffe, dass dir das hilft!

    
MikeB 06.12.2015 18:35
quelle