概念
PL/SQL是一种块结构的语言,一个PL/SQL程序包含了一个或者多个逻辑块,逻辑块中可以声明变量,变量在使用之前必须先声明。除了正常的执行程序外,PL/SQL还提供了专门的异常处理部分进行异常处理。
语法
[DECLARE
--declaration statements] ①
BEGIN
--executable statements ②
[EXCEPTION
--exception statements] ③
END;
语法解析:
①声明部分:声明部分包含了变量和常量的定义。这个部分由关键字DECLARE开始,如果不声明变量或者常量,可以省略这部分。
②执行部分:执行部分是 PL/SQL块的指令部分,由关键字BEGIN开始,关键字END结尾。所有的可执行PL/SQL语句都放在这一部分,该部分执行命令并操作变量。其他的PL/SQL块可以作为子块嵌套在该部分。PL/SQL块的执行部分是必选的。注意END关键字后面用分号结尾。
③异常处理部分:该部分是可选的,该部分用EXCEPTION关键字把可执行部分分成两个小部分,之前的程序是正常运行的程序,一旦出现异常就跳转到异常部分执行。
PL/SQL是一种编程语言,与Java和C#一样,除了有自身独有的数据类型、变量声明和赋值以及流程控制语句外,PL/SQL还有自身的语言特性:
★PL/SQL对大小写不敏感,为了良好的程序风格,开发团队都会选择一个合适的编码标准。比如有的团队规定:关键字全部大些,其余的部分小写。
★PL/SQL块中的每一条语句都必须以分号结束,SQL语句可以是多行的,但分号表示该语句结束。一行中可以有多条SQL语句,他们之间以分号分隔,但是不推荐一行中写多条语句。
特殊符号说明
类型 | 符号 | 说明 |
赋值运算符 | := | Java和C#中都是等号,PL/SQL的赋值是:= |
特殊字符 | || | 字符串连接操作符。 |
-- | PL/SQL中的单行注释。 | |
/*,*/ | PL/SQL中的多行注释,多行注释不能嵌套。 | |
<<,>> | 标签分隔符。只为了标识程序特殊位置。 | |
.. | 范围操作符,比如:1..5 标识从1到5 | |
算术运算符 | +,-,*,/ | 基本算术运算符。 |
** | 求幂操作,比如:3**2=9 | |
关系运算符 | >,<,>=,<=,= | 基本关系运算符,=表示相等关系,不是赋值。 |
<>,!= | 不等关系。 | |
逻辑运算符 | AND,OR,NOT | 逻辑运算符。 |
代码演示:
1.声明变量:
PL/SQL支持SQL中的数据类型,PL/SQL中正常支持NUMBER,VARCHAR2,DATE等Oracle SQL数据类型。声明变量必须指明变量的数据类型,也可以声明变量时对变量初始化,变量声明必须在声明部分。声明变量的语法是:
语法格式:声明变量
变量名数据类型[ :=初始值]
SQL>DECLARE
2 sname VARCHAR2(20) :='jerry'; ①
3BEGIN
4 sname:=sname||'and tom'; ②
5 dbms_output.put_line(sname); ③
6END;
代码解析:
①声明一个变量sname,初始化值是“jerry”。字符串用单引号,如果字符串中出现单引号可以使用两个单引号(’’)来表示,即单引号同时也具有转义的作用。
②对变量sname重新赋值,赋值运算符是“:=”。
③ dbms_output.put_line是输出语句,可以把一个变量的值输出,在SQL*Plus中输出数据时,可能没有结果显示,可以使用命令:set serveroutputon设置输出到SQL*Plus控制台上。
对变量赋值还可以使用SELECT…INTO 语句从数据库中查询数据对变量进行赋值。但是查询的结果只能是一行记录,不能是零行或者多行记录。
2.变量赋值:
对变量赋值还可以使用SELECT…INTO 语句从数据库中查询数据对变量进行赋值。但是查询的结果只能是一行记录,不能是零行或者多行记录。
SQL>DECLARE
2 sname VARCHAR2(20) DEFAULT'jerry'; ①
3BEGIN
4SELECT ename INTO snameFROM emp WHERE empno=7934; ②
5 dbms_output.put_line(sname);
6END;
代码解析:
①变量初始化时,可以使用DEFAULT关键字对变量进行初始化。
②使用select…into语句对变量sname赋值,要求查询的结果必须是一行,不能是多行或者没有记录。
3.声明常量:
常量在声明时赋予初值,并且在运行时不允许重新赋值。使用CONSTANT关键字声明常量。
SQL>DECLARE
2pi CONSTANT number :=3.14; --圆周率长值 ①
3 r numberDEFAULT3; --圆的半径默认值3 ②
4 area number; --面积。
5BEGIN
6 area:=pi*r*r; --计算面积
7 dbms_output.put_line(area); --输出圆的面积
8END;
代码解析:
①声明常量时使用关键字CONSTANT,常量初值可以使用赋值运算符(:=)赋值,也可以使用DEFAULT关键字赋值。
4.宿主常量:
在SQL*Plus中还可以声明Session(会话,也就是一个客户端从连接到退出的过程称为当前用户的会话。)全局级变量,该变量在整个会话过程中均起作用,类似的这种变量称为宿主变量。宿主变量在PL/SQL引用时要用“:变量名”引用。
SQL>var emp_name varchar(30); ①
SQL>BEGIN
2SELECT ename INTO:emp_name FROM emp WHERE empno=7499; ②
3END;
代码解析:
①可以使用var声明宿主变量。
② PL/SQL中访问宿主变量时要在变量前加“:”。

扫描二维码关注我的微学堂
搜索刘老师微信号:Rman-2014,备注“Oracle学习与咨询”,即可添加好友;或者扫描下面二维码,关注我的“微学堂”公众号,了解最新OCP认证动态、题库及答案解析、培训机构及讲师介绍、课堂授课内容等。每天还有一篇技术文章发布哦!





