Oracle DROP TABLE IF EXISTS

capri

Mitglied
Hallo Forum,

ich bin gerade (oder eher immer noch) dabei Schema-Migration von PostgreSQL in Oracle.

Die Tabellen inkl. PrimaryKey und ForeignKey habe ich in Oracle erstellen können. Ich möchte aber bevor ich die Tabellen erstelle kontrollieren, ob die Tabellen mit gleichem Namen schon in der DB vorhanden sind bzw. wenn diese vorhanden sind, müssen sie vor dem CREATE TABLE Befehl gelöscht werden.

Dafür hätte ich normalerweise den Befehl "DROP TABLE IF EXISTS" benutzt. Leider scheint oracle SQL-Developer das nicht zu unterstützen. Ich hatte von Blöcken BEGINN ... END gelesen:

Code:
String myDropTable = "BEGIN EXECUTE IMMEDIATE 'DROP TABLE " + tName.toUpperCase()
+ "'; EXCEPTION WHEN OTHERS THEN   IF SQLCODE != -942 THEN RAISE;END IF; END;";

 Statement stmt4;
 stmt4 = con2.createStatement();
 ResultSet rs4 = stmt4.executeQuery(myDropTable);

Aber hier habe ich folgende Fehlermeldung bekommen:
java.sql.SQLException: SQL-Zeichenfolge ist keine Abfrage.

Wie binde ich den Block hier richtig ein? Oder wie kann ich "DROP TABLE IF EXISTS" am sinnvollsten ersetzen?

Schönen Dank im Voraus!
capri
 
Hallo httpdigest,

danke schön für deine Antwort!
Methode .executeUpdate() war eigentlich genau das, was ich gesucht hatte. Leider funktioniert das Ganze trotzdem nicht: Ich kriege Fehlermeldung: "Eindeutige und Primärschlüssel in Tabelle von Fremdschlüsseln referenziert".

Wenn ich die Fehlermeldung richtig interpretiere, gibt es in der zu löschenden Tabelle Schlüsseln vorhanden, was das Löschen verhindert.

Wie kann ich diese Problematik umgehen? Kann man irgendwie alle Tabellen auf einen Schlag löschen? Oder gibt es sonst einen Trick?

Noch mal danke und viele Grüße
capri
 

Zurück
Oben