PL/SQL 代码块:结构、语法和匿名示例
⚡ 智能摘要
PL/SQL 代码块是基本的执行单元,它将 PL/SQL 和 SQL 指令组合在一起,使它们能够一起执行,而不是逐行执行。每个代码块都包含声明部分、执行部分和异常处理部分,代码块可以是匿名的,也可以是命名的。
什么是PL/SQL块?
在 PL/SQL 中,代码不是以单行格式执行的;它总是按组执行。ping 将代码封装成一个名为“代码块”的单个元素。在本教程中,您将学习有关这些代码块的知识。
代码块包含PL/SQL和SQL指令。所有这些指令会作为一个整体执行,而不是逐条执行。
块结构
PL/SQL 代码块具有预定义的结构,代码按结构分组。以下是 PL/SQL 代码块的不同组成部分:
- 声明部分
- 执行部分
- 异常处理部分
下图展示了不同的 PL/SQL 代码块及其顺序。
声明部分
这是 PL/SQL 代码块的第一部分,它是可选的。在这一部分中,需要声明代码块中的变量、游标、异常、子程序、编译指示指令和集合。该部分还有一些其他特性:
- 本部分为可选部分,如果不需要任何声明,则可以跳过。
- 如果存在,它应该是 PL/SQL 代码块中的第一部分。
- 触发器和匿名代码块以关键字“DECLARE”开头。对于其他子程序,则没有此关键字;子程序名称后面的部分用于标记声明部分。
- 它后面必须始终跟执行部分。
执行部分
执行部分是主要且必不可少的部分,它实际执行其中编写的代码。因为 PL / SQL 预期包含可执行语句,此代码块不能为空,且必须至少包含一行有效的可执行语句。此部分还有一些其他特性:
- 它可以包含 PL/SQL 代码和 SQL 代码。
- 它可以包含一个或多个嵌套的块。
- 它以关键词“BEGIN”开头。
- 后面应该跟“END”或者异常处理部分(如果有的话)。
异常处理部分
异常是运行时不可避免的错误,需要进行处理。 Oracle 提供以代码块形式呈现的异常处理部分。该部分还可以包含 PL/SQL 语句,并且是可选的。
- 这是处理执行块中引发的异常的部分。
- 这是 PL/SQL 代码块的最后一部分。
- 来自此部分的控制永远不能返回到执行块。
- 它以关键词“异常”开头。
- 它后面应该始终跟关键字“END”。
关键字“END”表示PL/SQL代码块的结束。
PL/SQL 块语法
以下是 PL/SQL 块结构的语法。
DECLARE --optional <declarations> BEGIN --mandatory <executable statements. At least one executable statement is mandatory> EXCEPTION --optional <exception handles> END; --mandatory /
注意: 代码块后面应该始终跟一个“/”,这会向编译器发送有关代码块结束的信息。
PL/SQL 块的类型
PL/SQL 代码块主要分为两种类型:
- 匿名区块
- 命名块
下面先对两者进行简要比较,然后再分别进行描述。
| 方面 | 匿名区块 | 命名块 |
|---|---|---|
| 有名字 | 没有 | 是 |
| 存储在数据库中 | 没有 | 是的,作为一个对象 |
| 以。。开始 | 声明或开始 | CREATE |
| 可重复使用 | 仅限同一会话 | 随时可调用 |
匿名块
匿名块是指没有被分配任何名称的 PL/SQL 块。它们必须在同一会话中创建和使用,因为它们不会作为数据库对象存储在服务器上。
由于它们不存储在数据库中,因此无需单独的编译步骤。它们直接编写并执行,编译和执行在同一个进程中完成。其他一些特点:
- 这些代码块没有引用名称。
- 它们以关键字“DECLARE”或“BEGIN”开头。
- 由于它们没有引用名称,因此无法存储以供以后使用,必须在同一会话中创建和执行。
- 它们可以调用其他已命名的块,但不能调用匿名块,因为它没有引用。
- 它们可以包含命名或匿名的嵌套块,也可以嵌套在任何块中。
- 它们可以包含所有三个部分,其中执行部分是必需的,其他两部分是可选的。
命名块
命名块具有特定且唯一的名称。它们作为数据库对象存储在服务器上,因此只要存在即可引用或使用。命名块的编译过程是在它们作为数据库对象创建时单独进行的。其他一些特性:
- 这些块可以被其他块调用。
- 该代码块的结构与匿名代码块相同,只是它永远不会以“DECLARE”开头。相反,它以“CREATE”开头,这指示编译器将其创建为数据库对象。
- 这些模块可以嵌套在其他模块中,也可以包含嵌套的模块。
- 命名块基本上有两种类型:
- 程序
- 功能
您可以在指南中了解更多关于这些命名模块的信息。 程序和功能.



