PL/SQL(二)PL/SQL块

PL/SQL是一种块结构的语言,一个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语句,他们之间以分号分隔,但是不推荐一行中写多条语句。

PL/SQL中的特殊符号说明:

类型符号说明
赋值运算符 :=Java和C#中都是等号,PL/SQL的赋值是:=
特殊字符 ||字符串连接操作符。
 --PL/SQL中的单行注释。
 /*,*/PL/SQL中的多行注释,多行注释不能嵌套。
 <<,>>标签分隔符。只为了标识程序特殊位置。
 ..范围操作符,比如:1..5 标识从1到5
算术运算符 +,-,*,/基本算术运算符。
 **求幂操作,比如:3**2=9
关系运算符 >,<,>=,<=,=基本关系运算符,=表示相等关系,不是赋值。
 <>,!=不等关系。
逻辑运算符 AND,OR,NOT逻辑运算符。

 

※变量声明

PL/SQL支持SQL中的数据类型,PL/SQL中正常支持NUMBER,VARCHAR2,DATE等Oracle SQL数据类型。声明变量必须指明变量的数据类型,也可以声明变量时对变量初始化,变量声明必须在声明部分。声明变量的语法是:

语法格式:声明变量


 

 变量名 数据类型[ :=初始值]


 

 语法解析:

 数据类型如果需要长度,可以用括号指明长度,比如:varchar2(20)。

代码演示:声明变量

SQL> DECLARE 
2 sname VARCHAR2(20) :='jerry'; ① 
3 BEGIN 
4 sname:=sname||' and tom'; ② 
5 dbms_output.put_line(sname); ③ 
6 END; 

 

代码解析:

① 声明一个变量sname,初始化值是“jerry”。字符串用单引号,如果字符串中出现单引号可以使用两个单引号(’’)来表示,即单引号同时也具有转义的作用。
② 对变量sname重新赋值,赋值运算符是“:=”。
③ dbms_output.put_line是输出语句,可以把一个变量的值输出,在SQL*Plus中输出数据时,可能没有结果显示,可以使用命令:set serveroutput on设置输出到SQL*Plus控制台上。

 

对变量赋值还可以使用SELECT…INTO 语句从数据库中查询数据对变量进行赋值。但是查询的结果只能是一行记录,不能是零行或者多行记录。

代码演示:变量赋值

SQL> DECLARE 
2 sname VARCHAR2(20) DEFAULT 'jerry'; ① 
3 BEGIN
4 SELECT ename INTO sname FROM emp WHERE empno=7934; ②
5 dbms_output.put_line(sname); 
6 END;

 代码解析:

① 变量初始化时,可以使用DEFAULT关键字对变量进行初始化。

② 使用select…into语句对变量sname赋值,要求查询的结果必须是一行,不能是多行或者没有记录。

※声明常量

常量在声明时赋予初值,并且在运行时不允许重新赋值。使用CONSTANT关键字声明常量。

代码演示:声明常量

SQL> DECLARE 
2 pi CONSTANT number :=3.14; --圆周率长值 ① 
3 r number DEFAULT 3; --圆的半径默认值3 ② 
4 area number; --面积。 
5 BEGIN 
6 area:=pi*r*r; --计算面积 
7 dbms_output.put_line(area); --输出圆的面积 
8 END;

 

代码解析:

① 声明常量时使用关键字CONSTANT,常量初值可以使用赋值运算符(:=)赋值,也可以使用DEFAULT关键字赋值。

 

在SQL*Plus中还可以声明Session(会话,也就是一个客户端从连接到退出的过程称为当前用户的会话。)全局级变量,该变量在整个会话过程中均起作用,类似的这种变量称为宿主变量。宿主变量在PL/SQL引用时要用“:变量名”引用。

代码演示:宿主常量

SQL> var emp_name varchar(30); ① 
SQL> BEGIN 
2 SELECT ename INTO :emp_name FROM emp WHERE empno=7499; ②
3 END;

 

代码解析:
① 可以使用var声明宿主变量。
② PL/SQL中访问宿主变量时要在变量前加“:”。

 

转载于:https://www.cnblogs.com/fengrui-/p/6076737.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值