Wo Bedingungen in der Unterabfrage während der Verwendung von ANSI zusammenkommen
Frage
Warum funktioniert es nicht?
SELECT a.*
FROM dual a
JOIN (SELECT * FROM dual WHERE 1=1) b
ON (1=1);
Ich bekomme "ora-00900: Ungültige SQL-Anweisung". Gibt es eine Möglichkeit, die Klausel innerhalb der Unterabfrage zu verwenden?
Bearbeiten: Version 9.2
SELECT *
FROM v$version
Oracle9i Enterprise Edition Release 9.2.0.8.0 - 64bit Produktion
Die folgenden Ausführungen finden in Ordnung ausgeführt:
SELECT a.*
FROM dual a
JOIN (SELECT * FROM dual /*WHERE 1=1*/) b
ON (1=1)
Lösung
Es funktioniert bei mir bei 9.2 (32 -Bit -Version ist der einzige Unterschied):
SQL> SELECT a.*
2 FROM dual a
3 JOIN (SELECT * FROM dual WHERE 1=1) b
4 ON (1=1);
D
-
X
SQL> quit
Disconnected from Oracle9i Enterprise Edition Release 9.2.0.8.0 - Production
With the OLAP and Oracle Data Mining options
JServer Release 9.2.0.8.0 - Production
Andere Tipps
Welche Version verwenden Sie?
Genau das gleiche SQL funktioniert für mich einwandfrei (Oracle Database 10G Express Edition Release 10.2.0.1.0).
Orakel unten 9i
unterstützt nicht ANSI
Schließen Sie die Syntax bei.
Verwenden Sie dies, wenn Sie eingeschaltet sind 8i
und darunter:
SELECT a.*
FROM dual a,
(
SELECT *
FROM dual
WHERE 1 = 1
) b
WHERE 1 = 1
Es sieht für mich richtig aus und ich kann es in 10G ausführen, aber es versagt mit 8i, welche Version von Oracle verwenden Sie?