暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

PL/SQL详解之plsql块

Oracle微学堂 2018-10-11
1904

概念

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是一种编程语言,与JavaC#一样,除了有自身独有的数据类型、变量声明和赋值以及流程控制语句外,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,DATEOracle 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认证动态、题库及答案解析、培训机构及讲师介绍、课堂授课内容等。每天还有一篇技术文章发布哦!


最后修改时间:2019-12-20 16:32:39
文章转载自Oracle微学堂,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论