第3章 PL/SQL编程
本章介绍PL/SQL有关的内容,主要包括匿名块、存储过程和存储函数三种形式的PL/SQL块,以及在PL/SQL中如何使用变量、类型、流控制语句、游标、触发器、异常等内容,重点介绍如何利用PL/SQL块访问数据库中的数据。
3.1 PL/SQL概述
如果说SQL是一种标准的数据库访问语言,那么PL/SQL则是Oracle公司开发的一种编程语言,它是对SQL的扩充。在PL/SQL程序中,可以定义变量、数据类型、函数以及过程,可以使用流控制语句,可以包含SQL语句,还可以进行错误处理。利用PL/SQL程序,可以对数据库进行复杂的访问。
与SQL相比,PL/SQL有很多优点,例如,PL/SQL体现了模块化的程序设计思想,在PL/SQL程序中可以定义函数和过程,用来完成不同的功能。PL/SQL程序还可以在不同平台、不同计算机之间方便地移植。另外,利用PL/SQL程序可以大大提高访问数据库的效率,因为PL/SQL程序可以在SQL*Plus中执行,也可以在客户端的应用程序中调用执行,只要知道PL/SQL程序的名字,就可以调用它。图3.1说明了这一点。
图 3.1 PL/SQL程序与传统SQL执行方式的比较
从图3.1中可以看出,传统的SQL命令是单独执行的,客户端每执行一条SQL语句,都要向数据库服务器发出一次请求,并从服务器返回一次结果。而PL/SQL程序是作为一个整体执行的,客户端只需发出一次请求,服务器执行后只返回一个结果。
PL/SQL是一种结构化编程语言,程序的基本单元是块,主要的块形式有函数、过程和匿名块。一个PL/SQL块由以下三部分组成:
DECLARE
变量声明部分
BEGIN
可执行部分
EXCEPTION
异常处理部分
END
其中变量声明部分用来定义变量、类型、游标、子程序、触发器、异常等。被声明的元素在本块范围内有效。这一部分在PL/SQL块中是可选的。
可执行部分是PL/SQL块的主体,它包含了PL/SQL块的可执行代码,是必不可少的部分。PL/SQL块的功能主要体现在这一部分。
异常处理部分用来处理PL/SQL块在执行过程中发生的错误。如果块执行正常,则块正常结束,否则从出现错误的语句开始,转至异常处理部分开始执行,即进行异常处理。这部分在PL/SQL块中也是可选的。
最简单的PL/SQL块仅包含由BEGIN和END限定的可执行部分。例如:
BEGIN
DBMS_OUTPUT.PUT_LINE('Hello, World');
END;