Die SQL WITH clause (oder Subquery Refactoring)

Die SQL WITH clause (oder Subquery Refactoring) wurde mit der Oracle 9i release 2 database eingeführt und deren Benutzung ist seither Standard da sie deutliche Vorteile bietet. Mit der WITH clause wird eine temporäre Tabelle/View erstellt, auf die im Nachhinein zugegriffen werden kann. Dadurch spart man sich bei komplexen SQL-Statments jede Menge an Code und macht ihn auch meist lesbarer. Die temporäre Tabelle/View wird nur solang innerhalb eines SQL Statements verwendet, bis die Ausführung beendet ist.

 

Als Beispiel nehmen wir eine Employee und Department Tabelle.

Employees:

Bild1

Departments:


Wir wollen nun alle Employees anzeigen deren Standort sich in New York verbindet. Standardmäßig benutzen wir ein Subselect da sich die Location in der Departments Tabelle befindet.

SELECT *

FROM emp e

WHERE e.DEPTNO in (SELECT d.DEPTNO from dept d where d.loc = ‚NEW YORK‘);

 

 

 

 

 

 

Jetzt benutzen wir die WITH clause und erhalten das gleiche Ergebnis.

With w_dept_ny as

(SELECT /*+ materialize */ d.deptno

FROM dept d

WHERE d.loc = ‚NEW YORK‘)

 

SELECT *

FROM emp e

join w_dept_ny d on e.deptno = d.deptno;

Bild2 2
Bild3 1

Seit Oracle 12c ist es nun auch möglich PL/SQL Functions und Procedures in eine WITH claus zu packen. Dazu wird es in Zukunft noch einen gesonderten Post geben.

DBConcepts

Weitere Beiträge

AOUG Anwenderkonferenz 2026

DBConcepts bei der AOUG-Anwenderkonferenz 2026: Drei Beiträge aus der Praxis Am 15. und 16. Juni 2026 findet die AOUG-Anwenderkonferenz 2026 im Tech Gate Vienna statt.

Oracle 26ai Assertions für komplexe Datenregeln

Überblick Oracle bietet eine Fülle an Werkzeugen, um Datenintegrität und Datenqualität zu gewährleisten. Diese werden allgemein unter dem Begriff CONSTRAINT zusammengefasst. Dazu gehören unter anderem

Vielen Dank für Ihr Interesse an unserem Unternehmen. Derzeit suchen wir niemanden für diese Stelle. Aber wir sind immer an talentierten Menschen interessiert und freuen uns von Ihnen zu hören! Schicken Sie uns einfach Ihren Lebenslauf und eine kurze Nachricht und schreiben Sie an welcher Stelle Sie interessiert sind: recruitment@dbconcepts.com. Wir freuen usn von Ihnen zu hören!

DBConcepts

Newsletter abonnieren

Wir freuen uns, dass wir Ihr Interesse für den Newsletter geweckt haben! Mit dem Versand dieser Zustimmung erhalten Sie regelmäßig alle aktuellen Informationen!