Es ist durchaus möglich, dass die zweite Version des Codes nicht mehr funktioniert. Wenn er vorher nicht in Gebrauch war, ist es umso plausibler, dass er nicht funktioniert. (Siehe die akzeptierte Antwort für die Verwendung der veralteten Notation. Ich denke immer noch, dass der Rest der unten stehenden Ratschläge gültig ist - aber beachten Sie sorgfältig den Qualifizierer ' wenn Sie die SQL-Datei ändern müssen '; wenn Sie die SQL nicht aus einem anderen Grund ändern müssen, ist es nicht notwendig, die alte Schreibweise zu entfernen).
Beißen Sie in den sauren Apfel und arbeiten Sie mit der ANSI-Verknüpfung, wenn Sie einen Vergleich ohne Berücksichtigung der Groß-/Kleinschreibung durchführen müssen. Oder untersuchen Sie eine lokal basierte Alternative (mit case-insensitive-Vergleichen), falls eine solche Option in Oracle existiert.
Grundsätzlich sollten Sie jedoch die alte '(+)' Outer-Join-Notation in den Mülleimer werfen. Wenn Sie eine SQL-Anweisung ändern müssen, entfernen Sie die alte (veraltete) Notation und verwenden Sie stattdessen die ANSI-Join-Notation.
In einem Kommentar wird gefragt: "Wie kann dies in ANSI konvertiert werden"?
Sie schreiben sowohl die FROM-Klausel als auch die WHERE-Klausel um und verschieben dabei häufig die Join-Bedingungen von der WHERE-Klausel zu den ON-Bedingungen in der FROM-Klausel.
SELECT a.*, b.*
FROM a LEFT OUTER JOIN b ON UPPER(a.name) = UPPER(b.lname)
In einem anderen Kommentar wird die Frage gestellt, wie die Verknüpfung auf drei Tabellen erweitert werden kann.
SELECT a.*, b.*
FROM a
LEFT OUTER JOIN b ON UPPER(a.name) = UPPER(b.lname)
LEFT OUTER JOIN c ON on a.first = c.first