2017-05-30 8 views
0

Ich habe einige GTTs, die mit Daten gefüllt sind und später für WHERE-Klauseln (WHERE x in (SELECT * FROM gtt)) verwendet werden. Manchmal habe ich jedoch keine Daten für eine temporäre Tabelle oder möchte nicht danach filtern.leer Orakel globale temporäre Tabelle für Where-Klausel

Wenn ich es richtig verstehe, werden GTTs instanziiert, wenn ich etwas einfüge und für die Sitzung da bin. Gibt es eine Möglichkeit, eine leere Tabelle zu instanziieren, wenn ich das WHERE IN SELECT verwende, wirft es keinen Fehler (was es jetzt tut)? Oder muss ich die SELECT-Anweisung mit IFs erstellen, um selektiv nur ein WHERE für die GTS, die verwendet werden sollen, einzuschließen?

Derzeit sieht die Struktur wie folgt aus:

IF(data) 
INSERT INTO GTT1 SELECT ... 
END IF; 

(für mehrere GTTS)

SELECT x.data, x.more, a.a, a.b 
FROM table1 x, table2 a 
WHERE x.key in (SELECT * From gtt1) AND x.a = a.a; 
+0

Was ist der Fehler? – Nitish

+0

anstelle von UND sollten Sie WHERE verwenden. SELECT x.data, x.more, aa, ab FROM Tabelle x, Tabelle2 a WHERE x.key in (SELECT * Von gtt1 WHERE xa = aa; –

+0

Offensichtlich haben Sie Ihren Code bearbeitet, um vertrauliche Informationen zu entfernen. Aber Sie müssen vorsichtig genug sein, um genügend Informationen für uns zu behalten, um zu verstehen, was vor sich geht. – APC

Antwort

0

Sie könnten die WHERE-Klausel Ihrer INSERT INTO GTT so ändern, dass keine Zeilen gefunden werden.

Verwandte Themen