PLSQL 的定义

PL / SQL(过程语言/结构化查询语言)是 Oracle Corporation 对 SQL 和 Oracle 关系数据库的过程扩展。PL / SQL 在 Oracle 数据库(自版本 7),TimesTen 内存数据库(自版本 11.2.1)和 IBM DB2(自版本 9.7)开始提供。

PL / SQL 中的基本单元称为块,它由三部分组成:声明部分,可执行部分和异常构建部分。

DECLARE
   <declarations section>
BEGIN
   <executable command(s)>
EXCEPTION
   <exception handling>
END;

声明 - 此部分以关键字 DECLARE 开头。它是一个可选部分,定义了程序中使用的所有变量,游标,子程序和其他元素。

可执行命令 - 此部分包含在关键字 BEGIN 和 END 之间,它是必需部分。它由程序的可执行 PL / SQL 语句组成。它应该至少有一个可执行的代码行,它可能只是一个 NULL 命令,表示不应该执行任何操作。

异常处理 - 此部分以关键字 EXCEPTION 开头。此部分也是可选的,包含处理程序错误的异常。

每个 PL / SQL 语句都以分号(;)结尾。PL / SQL 块可以使用 BEGIN 和 END 嵌套在其他 PL / SQL 块中。

在匿名块中,只需要块的可执行部分,其他部分不是必需的。下面是简单匿名代码的示例,除了执行没有错误报告之外,它不执行任何操作。

BEGIN
    NULL;
END;
/ 

缺少可执行的指令会导致错误,因为 PL / SQL 不支持空块。例如,以下代码的执行会导致错误:

BEGIN
END;
/ 

应用程序将引发错误:

END;
*
ERROR at line 2:
ORA-06550: line 2, column 1:
PLS-00103: Encountered the symbol "END" when expecting one of the following:
( begin case declare exit for goto if loop mod null pragma
raise return select update while with <an identifier>
<a double-quoted delimited-identifier> <a bind variable> <<
continue close current delete fetch lock insert open rollback
savepoint set sql execute commit forall merge pipe purge

符号“*”在关键字 END 下方的行中表示以此块结尾的块为空或构造不良。每个执行块都需要执行指令,即使它什么都不做,就像在我们的示例中一样。