【问题标题】:Does something like Common Table Expressions exist in PL/SQL?PL/SQL 中是否存在诸如 Common Table Expressions 之类的东西?
【发布时间】:2011-03-21 02:32:54
【问题描述】:

我最近了解了 SQL Server 中的 CTE,并尝试在 PL/SQL 中使用它。我不需要它的递归优势,但是,我想用它来代替创建视图并提高查询性能。只是寻找一些关于哪些代码可能相似的方向。

【问题讨论】:

    标签: sql sql-server oracle


    【解决方案1】:

    在 Oracle 中,这称为子查询分解,它的工作原理与 SQL Server AFAIK 中的相同:

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

    查看SELECT documentation 并搜索“factoring”。

    【讨论】:

    • +1:从 9i 开始支持,子查询分解直到 11g(现在是 ANSI)才支持递归部分,因为 Oracle 已经支持使用 CONNECT BY 语法的分层查询......我不记得了当 PostgreSQL 开始支持语法时,可能在 v8.x 中。但是 CTE/子查询分解并不能提高查询性能,只是派生表/内联视图的语法不同。
    • 非常感谢。我正在使用 Oracle 8i,这可以解释我为什么要罢工。感谢您的帮助!
    • 直到 11g R2 才支持 with 子句的递归函数。 (在 11g R1 中不可用。)请参阅:download.oracle.com/docs/cd/E11882_01/server.112/e10592/…
    猜你喜欢
    • 2010-09-14
    • 2020-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-28
    • 2013-08-09
    • 1970-01-01
    相关资源
    最近更新 更多