Oracle是一种功能极其强大,并且非常灵活的关系数据库系统。就是因为这种强大的功能和灵活性,致使Oracle非常复杂。为了实现基于Oracle设计有用的应用程序,则有必要理解Oracle是如何操作存储在系统中的数据的。PL/SQL就是这样一种实现数据操作的重要工具,你不仅可以在Oracle内部使用它,而且可以在自己的应用程序中应用它。PL/SQL在许多环境下都是可用的,并且在不同环境下具有不同的优势。
我所编写的第一本有关PL/SQL的图书是《Oracle PL/SQL Programming》,在1996年出版(英文版)。第一版主要涵盖了Oracle 7 Realease 7.3中的PL/SQL 2.3版本--这是那时最新版本的Oracle数据库和PL/SQL。有关PL/SQL的第H本书是1997年出版(英文版)的《Oracles PL/SQL Programming》,该书在第一版本的基础上,进一步包含了Oracle8 Realease8.0的最新信息,当时Oracle8i Realease 8.0是最新的Oracle版本。有关PL/SQL的第三本书是2000年出版(英文版)的《 Oracle8i Advanced PL/SQL Programming》。第三本书注重强调高级特性,所涵盖版本最高为Oracle8i。
本书在以前版本的基础上继续扩展,包含了许多更新内容,集成了Oraclegi的特性。相对于以前的版本,本书增补了许多介绍性材料。同时,本书和《Oracle8i Advanced Programming》完全涵盖了PL/SQL语言。
本书包含的新内容
首先,这个版本的PL/SQL编程书与前几版本的主要的差别在于本书提供了Oracle9i的新特性。在本书中可以见到对这些新特性的讨论。比如,本书第3章在讨论基本PL/SQL语法的同时讨论了CASE语句( Oracle9i的一个新特性)。至于PL/SQL开发环境,本书包含了以前版本中提供的所有开发工具的新版本,以及一个新的IDE。
读者对象
我们设计本书的定位是用户指南和PL/SQL参考手册。本书适合于所有Oracle用户,尤其适合于那些以前从未使用过PL/SQL的用户。我们在第12章更详细地讨论了一些高级内容。
如何使用本书
本书包含12章和3个附录。其中章节被划分成三部分:概述和开发环境、PL/SQL基本特性,以及更多的PL/SQL特性。
第一部分:概述及开发环境
本书的第一部分介绍了PL/SQL和PL/SQL所运行的环境,还讨论了附赠光盘所提供的PL/SQL开发环境。
第1章:PL/SQL简介
第1章介绍了PL/SQL,并且描述了该语言的一些主要特性,讨论了不同的PL/SQL版本,以及数据库版本和PL/SQL版本的对应关系。这一章结尾讨论了一个数据库模式,我们全书都使用该范例。
第2章:开发及运行环境
PL/SQL可以运行在许多不同类型的环境下,不仅可以运行在客户端,也可以运行在服务器端。在这一章中,我们讨论了PL/SQL引擎的不同位置,以及不同引擎之间的通信,还讨论了附赠光盘所包含的开发工具,包括屏幕抓图。
第二部分:PL/SQL基本特性
这部分讨论了PL/SQL的关系型特性,包括该语言的语法和数据类型,以及如何使用SQL。内置的SQL函数、游标、错误处理和集合。
第3章:PL/SQL基础
在讨论任何编程语言时,首先讨论的肯定是该语言的语法和数据类型。在这一章中,我们将了解PL/SQL提供的所有数据类型,以及它所支持的控制结构。
第4章:在PL/SQL中使用 SQL
. 第4章讨论了PL/SQL的过程化结构。正是SQL的有效性,才使该语言功能强大和有用。在这一章中,还讨论了SQL查询和DML语句的用法,以及事务机制。
第5章:内置SQL函数
SQL语言有大量的内置函数,这些内置函数可以进一步增强该语言的作用。我们将在这一章学习这些函数,包括在不同数据库版本中的函数。
第6章:游标
游标被用于处理多数据行查询。借助于游标,你可以循环处理结果集,并且依次处理每个数据行。在这一章中,我们讨论了游标的语法,并且讨论了不同类型的检索循环,还讨论了如何使用游标变量。
第7章:错误处理
如果没有智能处理运行时错误的能力,则任何程序都不是完善的。PL/SQL支持异常的使用(类似于Java),其中异常提供了处理任何运行时问题的具体结构。在这一章中,我们将详细地讨论异常的工作机制和异常传播。
第8章:集合
集合是PL/SQL对象组,并且包含index-by表、嵌套表和可变数组。这些数据类型非常类似于其他语言的数组。我们将讨论如何在数据库中存储嵌套表和数组,以及有关的集合方法。
第三部分:更多PL/SQL特性
本书的第三部分讨论了如何使用过程、包、函数和触发器,还将简单讨论PL/SQL的高级特性。
第9章:创建过程、函数和包
在第9章中,我们将讨论怎样创建过程和函数(通称为子程序),以及如何在数据库中存储它们;还将讨论了创建于程序和包的语法,以及参数的传递机制。
第10章:使用过程、函数和包
第10章进一步扩展了第9章的内容,讨论了有关子程序和包的其他特性,包括如何从SQL语句中调用,以及相互间的依赖关系;还将讨论包怎样与共享池相互交互。
第11章:数据库触发器
触发器是特殊类型的PL/SQL语句块,无论何时触发事件发生时,相应触发器都会自动执行。触发事件可能是诸如INSERT语句的DML操作、DDL语句或者系统事件。触发器也可以代替特定DML语句被执行。我们将在这一章详细讨论这些触发器。
第12章:高级特性
第12章简单讨论了PL/SQL的一些高级特性。这包括对象类型、动态SQL、LOB和管道化函数;还将讨论一些更常见的内置包,比如DBMS_ALERT、DBMS_JOB、DBMS_LOB。DBMS_PIPE、DBMS_SQL和UTL_FILE。同时,还将讨论Oracle9i对通信包UTL_TCP。UTL_HTTP、UTL_SMTP和UTL_INADDR的增强特性。
附录
附录部分将提供有关PL/SQL的有用参考信息。
附录A:包指南
该附录讨论了Oracle中有效的内置包。这些包可以大大地扩展该语言的功能。
附录B:PL/SQL保留字
该附录给出PL/SQL的所有保留字。在命名变量和其他PL/SQL对象时,你应该避免使用它们。
附录C:数据字典
该附录总结许多数据字典视图,尤其是那些与PL/SQL程序员最相关的数据字典视图。