oracle database 10g pl/sql程序设计,Oracle Database 10g 的 PL/SQL 中新增了哪些内容

Oracle 数据库 10g 中 PL/SQL 的新增内容

和每个新版本一样,Oracle 数据库 10g 引进了一些新的 PL/SQL 语言特性,并提供了一些新的 PL/SQL 程序包。在本页页尾我们简要地把它们列了出来。

不过在这个版本中,PL/SQL 方面的最重要的改进是一些

明显 的变化带来的运行期性能的显著提高。Oracle 数据库 10g 推出了一个新的 PL/SQL 编译器和一个经过重新调整的 PL/SQL 运行环境。此外,用于 PL/SQL 原生编译的系统也得到了很大的改善。因而,用户可以期待

在 Oracle 数据库 10g 下编译的计算密集型 PL/SQL 程序的运行速度平均是其在 Oracle9i 数据库第 2 版下编译时运行速度的

两倍。

而这个速度将是其在 Oracle8 数据库下的

三倍。

这些倍数如此之大,以至于它们可能看起来确实难以置信。为了避免您怀疑这些数字,我们提供了大量的证实资料:

PL/SQL 正变得更快说明了 PL/SQL 编译器和运行期系统的工作方式,并显示了这种程度的重大改进是如何真正成为可能的。

PL/SQL 性能测量工具叙述了一个性能实验,该实验的结论就是上面提到的那些大的性能改进倍数。我们提供了一个可下载的工具包,以使您能够自己重复这个实验。

自由、有序以及 PL/SQL 优化 主要针对专业的 PL/SQL 编程人员,其中介绍了新编译器的使用和功能。

PL/SQL 性能 揭秘 主要针对使用 PL/SQL 代码的读者,重新解读了一些旧的 PL/SQL 性能概念。

PL/SQL 正变得更快

这篇白皮书来自 Oracle Corporation 的 PL/SQL 小组提供的一篇相同标题的 OracleWorld 2003 演示文稿。它说明了对从 Oracle9i 数据库第 2 版转移到 Oracle 数据库 10g 的 PL/SQL 编译和运行时系统所作的彻底的修改。其中还介绍了在这一长期项目中,某些运行时系统改进是如何在早期版本中“遗漏”的(从 Oracle8i 数据库开始)。

PL/SQL 性能测量工具

本文讲述了一个实验,其中使用了一大组有代表性的测试程序,这些程序测量了在附带的白皮书

PL/SQL 正变得更快中提到的那些变化的效果,并提供了实验结果和它们的分析。

使读者能够重复实验和验证结果所需的全部已经被打包,并在这个网站上提供下载。本文还可用作下载工具包时的说明手册。它显示了您如何能够轻松地在实验中包含您自己的测试程序。

自由、秩序和 PL/SQL 优化

为了实现加速,Oracle 数据库 10g PL/SQL 编译器对原来的源代码进行了些微重组(就像所有的优化编译器那样)。这些优化不仅应用到了经过解释的 PL/SQL 程序上,而且也应用到了原生编译的 PL/SQL 程序上。这些重组可能会导致 PL/SQL 程序在细节行为上出现“无关紧要”的变化。

本文确切地说明了可能发生的变化及其原因;这是对之前只是稍微提到过的 PL/SQL 定义的部分的一个详细说明。那些设计或编写 PL/SQL 应用程序和大致熟悉 PL/SQL 参考资料的人将从阅读本文中获益,而那些负责将现有的应用程序从早期的 Oracle 数据库版本中移植出来的人同样也将从阅读本文中获益。这篇资料是技术性的,但我们尽力使演示文稿保持足够清楚,以使所有对 PL/SQL 感兴趣的人都可以从中获益。

PL/SQL 性能 揭秘

Oracle 数据库 10g 中的 PL/SQL 改进改变了编程人员对传统人工优化的看法。该白皮书详细阐释了一些有关 PL/SQL 性能的旧概念,并说明了一些不再使用、而另一些因为合理仍在继续使用的概念。此外,其中还探讨了一些根本就不合理,但却神秘流行开来的概念。

该白皮书介绍了一个其结果不言自明的实验性调查。然而,该文并没有利用 Oracle 总部(他们采用了该语言)的小组提供的对 PL/SQL 内在的特殊理解。这些结果及其专业解释表明,如今在 Oracle 数据库 10g 中,PL/SQL 编程人员可提高代码的清晰度和正确性,并将生成高效运行时代码的作业委托给编译器和运行环境。

新的 PL/SQL 语言特性概要

Oracle 数据库 10g 引进了对这些新的语言特性的支持:

binary_float 和

binary_double 数据类型(IEEE 数据类型)。

用来支持通过标准 POSIX 语法处理正则表达式的

regexp_like、

regexp_instr、

regexp_substr 和

regexp_replace 内置功能。

在支持诸如

equals、

union、

intersect、

except、

member 之类的操作的嵌套表例程上进行的多集合操作。

用户定义的引号字符。

forall 提供的

indices of 和

values of 语法。

binary_integer 和

pls_integer 之间的差异消失了。

除了用户自定义的引号字符(为编程人员提供的一个方便特性)之外,所有这些特性都是有关性能的,当然,它们都拥有高效的实现。例如,IEEE 数据类型具有对数学实数进行机器运算的好处。使用了任意这些新特性且用 PL/SQL 来表示的一个相应的算法任务将比没有使用这些特性的算法任务运行快了许多。

PL/SQL 正变得更快 白皮书报告了对于非常依赖

数字 算法的测试程序和利用新的

binary_double 重新进行了实施的测试程序,速度提高的

倍数 在

4 到

13 之间。

在这个新的语言特性列表中,除

forall 增强和关于 PL/SQL 整数的变化之外,所有特性正式地讲都是 SQL 中的新特性。PL/SQL 有义务在一个 PL/SQL 上下文中(例如,在 PL/SQL 赋值语句中)支持所有这些 SQL 特性。这是 PL/SQL 独一无二的能力,并且这与它拥有和 SQL 一样的数据类型系统的事实密切相关。PL/SQL 开发小组尽力使用户能够无缝地一起使用 SQL 和 PL/SQL。

新的 PL/SQL 编译器还引进了对编译器

警告 的支持。警告的类型有多种(

严重、

性能 和

信息)。每一种类型和每一个单独的警告都可以独立地

启用、

禁用,或者作为一个编译

错误 来对待。

新提供的 PL/SQL 程序包概要

PL/SQL 程序包在扩展 SQL 不能满足目的时用来扩展 Oracle 数据库的功能。因此,它们实施了大量的功能。在讨论新的 PL/SQL 特性的时候,很自然我们在这一部分中将把范围限制在那些能够被认为增强了 PL/SQL 语言本身的程序包上。

Utl_Mail。这个新的程序包使 PL/SQL 编程人员可以发送通过编程方式撰写的邮件。它只需要用户具有普通 GUI 电子邮件客户端的概念,而无需了解底层的协议 (SMTP) 特性。这使得它区别于 Oracle8i 数据库中引进的

Utl_Smtp。

Utl_Smtp 需要编程人员了解 SMTP 协议的细节。

Utl_Mail 使用起来要简单得多,因为它仅支持

Utl_Smtp 提供的功能的一个有限但很常用的子集。

Utl_Compress。这个新的程序包在 PL/SQL 环境中提供了压缩和解压缩实用程序的常见功能。它让您能够压缩和解压缩一个

raw 或

blob 字节流,并保证在一个回程后返回原来的字节流。

Dbms_Warning。它允许 PL/SQL 编程人员对启用、禁用或将哪一种类型的警告和哪一个单独的警告作为错误对待进行细粒度的控制。它预期用在安装脚本的开头和结尾,以使每一个脚本都可以在它预定的方式下运行,而不会影响随后的脚本的运行方式。

返回 PL/SQL 中心

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值