- 前言
- 一、考核内容及要求
- 要求
- 知识点
- 章节
- 二、PL/SQL程序设计
- 1、PL/SQL块
- 2、程序结构
- 3、流程控制
- 4、游标的使用
- 5、异常处理
- 总结
前言
本博客仅做学习笔记,如有侵权,联系后即刻更改
科普:Oracle11g
一、考核内容及要求
要求二、PL/SQL程序设计知识点
- 掌握PL/SQL程序设计的基础知识
- 能阅读与编写简单的数据处理程序
章节
- PL/SQL块的组成及运行
- PL/SQL变量的分类与声明
- 变量的数据类型(Boolean,number,int,char,varchar2,date……)
- %TYPE变量、复合变量的声明与使用
- 条件语句(if… then…,if…then…else,if…then…elsif,case条件语句)
- 循环语句(loop…end loop,while,for循环语句)的编程应用
- 游标的使用(隐式游标、游标的属性、cursor for loop句型、显式游标、游标FOR循环)
- 异常处理(预定义异常、非预定义异常、用户定义的异常)
- 6.1,6.2,6.3,6.4,6.5,6.6
参考文章
oracle在数据库中引入的一种过程化编程语言1、PL/SQL块
2、程序结构set serveroutput on;设置在服务器端可以显示执行结果的功能
分为三个部分
- declare
–声明部分,可选。声明常量、变量或游标- begin
–执行部分,必选。程序的主体,完成逻辑控制和运算- exception
–异常部分,可选。纠正错误或给错误信息提示
end; --结束
/ --告诉oracle代码结束了
注意:在PL/SQL块中,每一条语句必须以分号结束
3、流程控制
常量变量
<变量名> <数据类型>[(长度):=<初始值>]
<常量名> constant <数据类型>:=<常量值>数据类型
1)number:数值
2)varchar2(length):可变长度字符。最大长度4000字节
3)date:日期类型
4)boolean:布尔类型。true或false
5)表名.列名%type:可以声明一个与指定列名类型相同的数据类型
6)复合型变量:
- 自定义记录类型
type name is record ();- 表名%rowtype:
根据数据表中行的结构定义一种特殊的数据类型
条件控制
- if-then-elsif语句。多分支条件判断,相当于java中的多重if,语法:
if(条件1) then
–语句1
elsif(条件2) then
–语句2
…
else
–语句n
end if;- case语句。相当于java中的switch语句语法:
case <选择器>
when <条件1> then 语句1;
when <条件2> then 语句2;
…
when <条件n> then 语句n;
end case;
4、游标的使用循环控制
- 分为四个部分
初始条件
循环条件
循环操作
循环变量- loop语句。先执行,再判断。类似于java中的do-while,语法:
loop
循环语句
exit when 结束条件;
end loop;- while语句。先判断,在执行,语法:
while 条件语句 loop
循环操作
end loop;- for语句。可以控制循环次数,语法:
for 循环变量 in [reverse] 最小值…最大值 loop
循环语句
end loop;
参考文章
5、异常处理分为三种
- 隐式游标
默认游标名:SQL
- SQL%ROWCOUNT 整型
代表DML语句成功执行的数据行数- SQL%FOUND 布尔型
值为TRUE代表插入、删除、更新或单行查询操作成功- SQL%ISOPEN 布尔型
DML执行过程中为真,结束后为假
- 显式游标
- 定义游标
CURSOR 游标名[(参数 数据类型]
IS SELECT语句;
- 打开游标
OPEN 游标名
查询结果传送到游标工作区- 提取游标
FETCH 游标名 INTO 记录变量- 关闭游标
CLOSE 游标名;- 游标FOR循环
- 定义游标
- 作为for循环的循环体
for i in cursor loop
使用游标for循环,不能使用open、fetch、close语句
参考文章
预定义异常
- DUP_VAL_ON_INDEX
试图通过一个重复值更新或插入一条语句,即违反了唯一性约束- NO_DATA_FOUND
执行SELECT语句未查询到数据- TOO_MANY_ROWS
未使用游标,SELECT语句返回了多行数据- ZERO_DIVIDE
被零除
非预定义异常
要使用非预定义的Oracle异常,则用户必须首先进行定义
分为三步
- (1)在PL/SQL块的declare定义部分定义异常名:
EXCEPTION; - (2)使用pragma exception_init语句,将其定义好的异常名与标准的Oracle错误编号联系起来:
pragma exception_init(, ); - (3)在PL/SQL块异常的处理部分对异常情况做出相应的处理。
WHEN exception_name THEN
总结自定义异常
通过显式使用 RAISE 语句来触发
分为三步
- (1)在PL/SQL块的declare定义部分定义异常名:
EXCEPTION; - (2)自定义条件判断:
raise exception_name;- (3)在PL/SQL块异常的处理部分对异常情况做出相应的处理
WHEN exception_name THEN
小小励志
有些事你现在不做,一辈子都不会做了。
如果你想做一件事,全世界都会为你让路。
《搭车去柏林》



