PL / SQL(过程语言/结构化查询语言)是Oracle Corporation对SQL和Oracle关系数据库的过程扩展。在Oracle数据库(版本7起),TimesTen内存数据库(版本11.2.1起)和IBM DB2(版本9.7起)中提供了PL / SQL。
PL / SQL中的基本单元称为块,它由三部分组成:声明部分,可执行部分和异常生成部分。
DECLARE <declarations section> BEGIN <executable command(s)> EXCEPTION <exception handling> END;
声明-本节以关键字DECLARE开头。它是一个可选部分,定义了所有变量,游标,子程序以及程序中要使用的其他元素。
可执行命令-此部分包含在关键字BEGIN和END之间,是强制性部分。它由程序的可执行PL / SQL语句组成。它应该至少有一行可执行代码,这可能只是NULL命令,指示什么都不应执行。
异常处理-本节以关键字EXCEPTION开头。本节还是可选的,包含exception(s)处理程序中的错误的内容。
每个PL / SQL语句均以分号(;)结尾。可以使用BEGIN和END将PL / SQL块嵌套在其他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”下一行的符号“ *”;表示以该块结尾的块为空或构造错误。就像我们的示例一样,每个执行块都需要执行指令,即使它什么也不做。