购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.1 PL/SQL块结构

在PL/SQL程序中,和其他大多数结构化程序语言一样,基本的代码单元是语句块,所有的PL/SQL程序都是由语句块构成的。

一个完整的PL/SQL语句块由3部分组成。代码如下。

其中,

(1)声明部分:声明部分是可选的,以关键字DECLARE开始,以BEGIN结束。该部分主要用于声明变量、常量、数据类型、游标、异常处理名称和本地(局部)子程序定义等。变量只有经过声明后才能在执行部分使用。

(2)执行部分:是PL/SQL块的功能实现部分,以关键字BEGIN开始,以END结束。该部分通过变量赋值、数据查询、数据操纵、数据定义、事务控制、游标处理等操作实现块的功能。也可以使用各种控制结构,嵌入各种SQL语句,实现更复杂的业务逻辑功能。

(3)异常处理部分:以关键字EXCEPTION开始,以END结束。该部分用于捕获执行部分产生的异常,如果没有产生异常或者异常没有被捕获,则该部分都不会执行。

(4)label可以用来标识一个块,以便在一个EXIT语句中使用或者标识在该块中声明的变量名。位于END之后的label必须与块开始的label相匹配。

定义PL/SQL块时需要注意下列事项:

(1)执行部分是必需的,而声明部分、异常部分是可选的。

(2)在PL/SQL语句块中的每个声明和语句都以一个分号结束。

(3)可以在一个块的声明部分嵌套命名块,即嵌套函数。

(4)可以在一个块的执行部分或异常处理部分嵌套其他的PL/SQL块。

(5)所有的PL/SQL块都以“END;”结束。

(6)PL/SQL中通过标识符命名变量、常量、游标、异常、关键字、标签、包、保留字、子程序、数据类型等,标识符不区分大小写。同时,命名时要注意与保留字、关键字的不同。

(7)PL/SQL中支持对运算符的广泛使用,如+,-,=,>=等,具体内容请参考金仓在线帮助文档。

(8)PL/SQL支持使用注释,分为单行注释和多行注释两种。其中,单行注释可以在一行的任何地方以“--”开始,直到该行结尾;多行注释以“/*”开始,以“*/”结束。

示例2.1: 一个完整的PL/SQL语句块。

功能描述: 从adminaddrs表中查找大连市对应的行政区域id。

程序代码如下。

基本的代码单元是语句块,语句块是可以嵌套的,即嵌套另一个PL/SQL语句块,称为子块。子块可以用来进行逻辑分组或将变量局部化为语句的一个小的语句组。在子块的生命期内,其所声明的变量会掩盖外层块中相同名称的变量,即存在变量的作用域和可见性问题。

1.变量的作用域

(1)变量的作用域是指变量的有效作用范围从变量声明开始,直到块结束。

(2)如果PL/SQL块相互嵌套,则在内部块中声明的变量是局部的,只能在内部块中引用;在外部块中声明的变量是全局的,既可以在外部块中引用,也可以在内部块中引用。

(3)如果内部块与外部块中定义了同名变量,则在内部块中引用外部块的全局变量,需要使用外部块名进行标识。

2.变量的可见性

(1)变量的可见性是指在PL/SQL单元中可以直接引用的变量。

(2)如果PL/SQL单元相互嵌套,并且在内部块中声明了与外部块中声明的变量同名,则在内部块中,同名的外部变量(全局变量)与内部变量(局部变量)都有效,但外部变量不可见。如要引用外部变量,应给外部块定义一个标签,然后通过外部块的标签指定要引用的外部变量。如果外部块没有标签,则在内部块中不能引用该同名全局变量。

需要注意的是,在一个PL/SQL块中不能引用其他同级的PL/SQL块中声明的变量。

示例2.2: 变量作用域与可见性示例。

程序代码如下。

示例2.3: 内部块引用外部块全局变量示例。

程序代码如下。 kzuLRGKCjQ5c9jY4bous2G72iuGgnfH2XLOnFPOPGD7FMlx2iadhYOC6sw+oZ/90

点击中间区域
呼出菜单
上一章
目录
下一章
×