【问题标题】:Introduce me to Oracle PL/SQL extensions向我介绍 Oracle PL/SQL 扩展
【发布时间】:2009-05-13 01:46:06
【问题描述】:

我是一名熟练的 SQL 用户;我有信心在 ANSI-SQL 中为 Sybase、MS SQL Server、MySQL 或 postgresql 创建模式和优化查询。我了解连接、子查询、索引等,所以我不需要概括在 Oracle 下没有什么不同。

我将从事需要使用 Oracle 的工作。指向我的在线资源,这些资源不是作为“Oracle 的 SQL 简介”,而是用于解释“为已经了解 SQL 的人提供 PL/SQL”的资源。

我对以下内容特别感兴趣:PL/SQL 扩展的简明指南,以及优化 Oracle 查询。

【问题讨论】:

    标签: sql oracle plsql


    【解决方案1】:

    Oracle® Database PL/SQL User's Guide and Reference (10g)真的,你还想要什么?

    如果您是 Oracle 的新手,我还建议您花一些时间学习它的事务模型,因为它与 SQL Server 有细微的不同,可能会咬到您。 Here 是一篇很好的文章。另一位建议阅读 Kyte 的发帖人很到位。

    【讨论】:

      【解决方案2】:

      您应该知道 PL/SQL 是一种或多或少完整的编程语言。像我这样的疯狂的人创建应用程序,其中大部分工作都在服务器上的 PL/SQL 包中完成。

      【讨论】:

      • 好点子,这个问题确实有点像 OP 认为 PL/SQL 只是 ANSI-SQL 之上的一些额外的 Oracle 时髦
      【解决方案3】:

      asktom.oracle.com 对浏览很有用。

      我建议您研究以下强大的功能:-

      • 分析函数
      • 物化视图
      • 流水线 PL/SQL 函数

      【讨论】:

        【解决方案4】:
        【解决方案5】:

        阅读 Steve Feuerstein 的文章和书籍,他是 PL/SQL 的主要传播者之一。

        关注他们的 PL/SQL 数据结构,如游标、关联数组、表(PL/SQL 不是 SQL)等。

        在使用谷歌搜索 Oracle 代码时要记住一件事,您遇到的旧代码要比新代码多得多。尝试学习新的而不是旧的。

        例如,循环查询的旧方法是创建一个游标,然后对其执行 while 循环,直到它不返回任何内容。现在你可以隐式地创建一个这样的循环:

        FOR Test IN (Select Ct from TableCT) LOOP Sum := Sum + Test.Ct; 结束循环;

        要优化查询,请获取 SQL Developer 并运行解释计划。可能需要一段时间才能理解,但这是我发现的最好方法。此外,如果您还没有遇到过,WITH 子句可以为优化查询创造奇迹。

        【讨论】:

        • for test in (select ..) loop ... end loop 至少有 12 年的历史了,我在 1997 年使用过它(Oracle 7.3)。
        • 我对隐式光标的“新”的错误。但是,我相信您必须小心使用谷歌搜索 oracle 代码这一点仍然有效。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-03-06
        • 1970-01-01
        • 1970-01-01
        • 2020-04-28
        • 2012-07-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多