2010-07-26 14 views
5

Hace poco aprendí acerca de CTE en SQL Server y estoy tratando de usarlo en PL/SQL. No necesito los beneficios recurrentes, sin embargo, me gustaría utilizarlo en lugar de crear una vista y mejorar el rendimiento de la consulta. Solo estoy buscando alguna dirección sobre qué código puede ser similar.¿Existe algo así como Common Table Expressions en PL/SQL?

+0

Es SQL, no PL/SQL. –

Respuesta

11

En Oracle Esto se conoce como la factorización subconsulta, y funciona igual que en SQL Server que yo sepa:

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

Ver SELECT documentation y la búsqueda de "factoring".

+8

+1: admitido desde 9i, el factoring Subquery no admitía la parte recursiva hasta 11g (que ahora es ANSI) porque Oracle ya soportaba consultas jerárquicas usando la sintaxis CONNECT BY ... No recuerdo cuando PostgreSQL comenzó a admitir la sintaxis, probable en v8.x. Pero CTE/Subquery Factoring no mejora el rendimiento de las consultas, solo una sintaxis diferente para tablas derivadas/vistas en línea. –

+1

Muchas gracias. Estoy usando Oracle 8i que explicaría por qué me estoy pegando. Aprecio la ayuda! –

+1

La función recursiva de la cláusula 'with' no se admite hasta 11g R2. (No disponible en 11g R1.) Ver: http://download.oracle.com/docs/cd/E11882_01/server.112/e10592/wnsql.htm#sthref6 –

Cuestiones relacionadas