令式程序块、声明部分、执行部分和异常处理部分组成
PL/SQL 是 Oracle 数据库提供的过程化语言,它是 ANSI 标准 SQL 的扩展,专为数据库操作设计。它的主要特点是能够结合 SQL 语句,实现更复杂的数据处理逻辑。
在 PL/SQL 中,变量的声明遵循一定的规则:变量名必须以字母开头,可以跟上字母、数字或特定字符(如 $、# 或 _),长度不超过 30 个字符,并且不能包含空格。数据类型包括 BINARY_INTEGER、NUMBER、PLS_INTEGER、CHAR、VARCHAR2、DATE、ROWID、UROWID、CLOB、BLOB、BFILE 和 BOOLEAN 等,每种类型都有其特定的用途和存储范围。
PL/SQL 的表达式支持常见的数学运算符(+、-、*、/、**)和布尔运算符(=、<、>、<=、>=、<>),还有其他特殊符号,如范围运算符 '..' 和字符串连接符号 '||'。
PL/SQL 程序块由四部分组成:
1. 声明部分(Declaration):定义变量、常量和游标等。
2. 执行部分(Execution):包含 SQL 语句和 PL/SQL 语句,执行实际的操作。
3. 异常处理部分(Exception Handling):用于捕获和处理程序运行时可能出现的错误。
4. 未命名的 PL/SQL 程序块:可以直接在 SQL*Plus 或其他工具中输入并立即执行,无需先创建。
PL/SQL 的控制结构包括:
- 顺序结构:按照代码的顺序逐行执行。
- 选择结构(如 IF...THEN...ELSIF...ELSE...END IF):根据条件选择执行不同的代码段。
- NULL 结构:无任何操作,通常用于占位或调试。
- 循环结构(如 FOR、WHILE、LOOP):重复执行一段代码直到满足特定条件。
记录和表是 PL/SQL 中处理数据的重要工具,%TYPE 和 %ROWTYPE 关键字允许我们基于已存在的列或行类型创建变量,简化了类型匹配的过程。游标用于遍历查询结果集,支持基本操作(如 OPEN、FETCH、CLOSE)、属性访问和参数化游标。
过程和函数是可重用的代码块,可以接受参数并返回值。它们可以有局部变量和异常处理,并可以通过包(Package)组织起来。触发器则是在特定数据库事件(如 INSERT、UPDATE、DELETE)发生时自动执行的代码,用于实现业务规则或数据验证。
异常处理允许我们优雅地处理错误,通过 DECLARE 区域声明预定义或自定义的异常,然后使用 WHEN-THEN 语句来指定如何响应这些异常。此外,还可以使用异常处理的特殊方法,如 EXIT、RAISE 和 RAISE_APPLICATION_ERROR。
本章还涵盖了习题,帮助读者巩固所学知识,加深对 PL/SQL 程序设计的理解和应用。通过学习这一章,读者将能够编写复杂的 PL/SQL 程序,包括处理数据、控制流程、管理异常以及与数据库交互。