Oracle (Old?) Joins - Ein Werkzeug / Skript für die Konvertierung?

7

Ich habe Orakel-Selektionen portiert, und ich habe so viele Anfragen durchgelesen:

%Vor%

... und:

%Vor%

Gibt es Anleitungen / Tutorials, um alle Varianten der (+) Syntax zu konvertieren? Wie heißt diese Syntax überhaupt (also kann ich googeln)?

Noch besser Gibt es ein Tool / Skript, das diese Konvertierung für mich übernimmt (Preferred Free)? Irgendein Optimierer? Ich habe rund 500 dieser Abfragen an Port ..

Wann wurde dieser Standard auslaufen? Jede Information wird geschätzt.

    
systemoutprintln 11.03.2010, 14:58
quelle

6 Antworten

21

Die (+) ist eine Oracle spezifische Prä-ANSI-92 OUTER JOIN-Syntax, da die ANSI-89-Syntax keine Syntax für OUTER JOIN support bereitstellt.

Ob es RIGHT oder LEFT ist, hängt davon ab, welche Tabelle & amp; Spaltenreferenz, an die die Notation angehängt ist. Wenn es neben einer Spalte angegeben ist, die der ersten Tabelle in der FROM -Klausel zugeordnet ist, handelt es sich um eine RIGHT -Verbindung. Sonst ist es ein LEFT beitreten. Dies ist eine gute Referenz für alle, die den Unterschied zwischen JOINs kennen müssen .

Erste Abfrage mit ANSI-92-Syntax neu geschrieben:

%Vor%

Zweite Abfrage, die mit ANSI-92-Syntax neu geschrieben wurde:

%Vor%     
OMG Ponies 11.03.2010, 15:45
quelle
3

Google "Oracle Join-Syntax". Der (+) wird für verschiedene Varianten von Outer-Joins verwendet. Ich denke, das erste, das du gezeigt hast, ist ein linker äußerer Join und der zweite ist ein rechtes äußeres Join. Ich habe diese Notation schon eine ganze Weile nicht mehr gesehen, also könnte ich etwas abseits sein, aber hoffentlich gibt es genug Informationen, um Google zu treffen und die richtige Antwort zu bekommen.

UPDATE:

Sie wollen also ein Werkzeug, um es für Sie zu tun? Ich habe gehört, dass SwisSQL so etwas tun kann, aber wenn die meisten Abfragen das sind Einfach genug, Sie können wahrscheinlich ein kleines Skript schreiben, das es für Sie tut. OMG Ponys Antwort zeigt schön das Muster für die Umwandlung von alter zu neuer Syntax.

    
quelle
2

Dies kann in einfachen Situationen wie

als WHERE-Klausel ziemlich kompliziert werden %Vor%

wird in die UNION- oder Subselect-Abfrage übersetzt.

Wenn Sie Python mögen, schauen Sie sich sqlparse an, es sieht vielversprechend aus und Sie werden es vielleicht bekommen zu tun, was Sie brauchen, plus einige Neuformatierung des SQL-Codes. Es würde leicht direkt an der Quelle arbeiten. Sie müssen ihm sagen, was zu tun ist, aber es befreit Sie davon, den langweiligen Parsingteil zu schreiben.

    
Unreason 19.03.2010 16:21
quelle
1

Für Oracle 10g

Ссылка

Sie können die anderen Versionen von oracle manuals online finden, wenn Ihre Version anders ist, obwohl die Joinsyntax wahrscheinlich nicht anders ist.

    
Shizzmo 11.03.2010 15:06
quelle
1

Ich erinnere mich, dass diese Syntax im Übergang von Oracle 8i zu 9i verschwunden ist - ich glaube, wir hatten ein Kröten-Plugin, das letztendlich alles für uns umwandelte, damit wir keine Zeit verschwenden mussten, um jede Anfrage zu durchlaufen / p>     

Jason M 12.03.2010 19:12
quelle
1

Ich kenne kein Tool, um die Konvertierung automatisch durchzuführen, aber selbst wenn, würde man seine Änderungen von Fall zu Fall überprüfen wollen. Daher glaube ich nicht, dass ein Werkzeug viel Zeit sparen würde.

Ссылка sagt:

  

Es gibt keinen Leistungsvorteil oder Treffer durch die Verwendung von ANSI-Joins anstelle von herkömmlichen Joins. Durch die Verwendung von ANSI-Joins sind Ihre Abfragen jedoch leichter zwischen DBMS-Plattformen übertragbar und leichter zu lesen. Am Ende kommt es jedoch auf persönliche Vorlieben an. Obwohl der ANSI-Standard Vorteile bietet, müssen Sie nicht wechseln, wenn Sie nicht möchten.

Sie müssen auch nicht den einen oder anderen Stil verwenden. Sie können Ihren Code eine Abfrage gleichzeitig konvertieren, mit der Gewissheit, dass alle weiterhin funktionieren. Ich würde die Abfragen unverändert lassen und die Verwendung der ANSI SQL-92-Syntax in neuem Code auflösen.

    
Bill Karwin 19.03.2010 21:38
quelle