2010-07-26 11 views
5

Ich habe vor kurzem über CTE in SQL Server gelernt und versuche, es in PL/SQL zu verwenden. Ich brauche nicht die wiederkehrenden Vorteile, aber ich möchte es anstelle der Erstellung einer Ansicht und zur Verbesserung der Abfrageleistung verwenden. Ich suche nur nach einer Richtung, in der Code ähnlich sein könnte.Gibt es in PL/SQL so etwas wie gemeinsame Tabellenausdrücke?

+0

Es ist SQL, nicht PL/SQL. –

Antwort

11

In Oracle wird dies als Unterabfrage Factoring bekannt, und es das gleiche wie in SQL Server AFAIK funktioniert:

with cte as (select * from emp) 
select * from cte join dept on dept.deptno = cte.deptno; 

SELECT documentation See und für "Factoring" suchen.

+8

+1: Unterstützt seit 9i, Unterabfrage factoring unterstützt nicht den rekursiven Teil bis 11g (das ist jetzt ANSI), weil Oracle bereits hierarchische Abfragen mit CONNECT BY Syntax unterstützt ... Ich erinnere mich nicht, wenn PostgreSQL begann, die Syntax zu unterstützen, wahrscheinlich in v8.x. CTEs/Subquery Factoring verbessert jedoch nicht die Abfrageleistung, sondern nur die Syntax für abgeleitete Tabellen/Inline-Ansichten. –

+1

Vielen Dank. Ich benutze Oracle 8i, was erklären würde, warum ich streiche. Ich schätze die Hilfe! –

+1

Die rekursive Funktion der 'with'-Klausel wurde erst ab 11g R2 unterstützt. (Nicht verfügbar in 11g R1.) Siehe: http://download.oracle.com/docs/cd/E11882_01/server.112/e10592/wnsql.htm#sthref6 –