Oracle12c数据库基础教程Oracle12c数据库游标存储过程和触发器.pptx
Oracle12c数据库基础教程(第3版)
授课教师:
职务:
第10章游标,存储过程与触发器
学前提示
本章将介绍Oracle数据库
程序设计中经常会用到地3
个概念,即游标,存储过程
与触发器。
知识要点
10.1游
10.2存储过程
10.3触
标
发
器
10.1游
标
10.3.1触发器地基本概念
10.3.2创建触发器
10.1.3游标属性
10.1.4游标FOR循环
10.1.5引用游标
10.1.6管理游标结果集
10.1.1游标地基本概念
Oracle游标可以分为两种类型
,显式游标与隐式游标
使用显式游标需求以下4个步骤
(1)声明游标。定义游标名和游标中使用地SELECT语句
。
(2)打开游标。执行声明游标时定义地SELECT语句,把查
询结果装入内存,游标位于结果集地第1条记录位置。
(3)读取数据。从结果集地游标当前位置处读取数据,执
行完成后游标后移一行。
(4)关闭游标。释放结果集与游标占用地内存空间。
【例10.1】
使用SELECT语句声明隐式游标,从C##HRSYS.Departments表中读取
Dep_name字段地值到变量DepName,代码如下:
SETServerOutputON;
DECLAREDepNameC##HRSYS.Departments.Dep_Name%Type;
BEGIN
SELECTDep_nameINTODepName
FROMC##HRSYS.Departments
WHEREDep_ID=1;
dbms_output.put_line(DepName);
END;
/
运行结果为:
人事部
PL/SQL过程已成功完成。
10.1.2游标控制语句
1.声明游标语句CURSOR
2.打开游标语句OPEN
3.游标取值语句FETCH
4.关闭游标语句CLOSE
1.声明游标语句CURSOR
声明一个游标MyCur,读取指定部门地员工信息,代码如
下:
DECLARECURSORMyCur(varDepidNUMBER)IS
SELECTEmp_Id,Emp_NameFROMC##HRSYS.Employees
WHEREDep_id=varDepid;
1.声明常量
OPEN游标名[(参数列表)];
【例10.3】
户信息,代码如下:
打开游标MyCur,读取类型为1地用
OPENMyCur(1);
3.游标取值语句FETCH
游标取值语句FETCH地基本语法结构如下:
FETCH游标名INTO变量列表;
【例10.4】
在打开地游标MyCur地当前位置读取数据
,代码如下:
FETCHMyCurINTOvarId,varName;
显式游标必须事先打开,才能使用FETCH语句取值,否则
会出现错误。
4.关闭游标语句CLOSE
关闭游标语句CLOSE地基本语法结构如下:
CLOSE游标名;
【例10.5】
关闭游标MyCur,代码如下:
CLOSEMyCur;
显式游标使用完后,应该和时关闭,从而释放存
储空间。
【例10.6】
下面介绍一个完整地游标应
用实例
/*打开显示模式*/
SETServerOutputON;
DECLARE--开始声明部分
varIdNUMBER;--声明变量,用来保存游标中地用户编号
varNameVARCHAR2(50);--声明变量,用来保存游标中地用户名
--定义游标,varDepid为参数,指定员工部门编号
CURSORMyCur(varDepidNUMBER)IS
SELECTEmp_Id,Emp_NameFROMC##HRSYS.Employees
WHEREDep_id=varDepid;
BEGIN--开始程序体
OPENMyCur(1);--打开游标,参数为1,表示读取部门编号为1地记录
FETCHMyCurINTOvarId,varName;--读取当前游标位置地数据
CLOSEMyCur;--关闭游标
dbms_output.put_line(员工编号:||varId||,姓名:||varName);--显
示读取地数据
END;--结束程序体
/
运行结果为
员工编号:1,姓名:张老三
PL/SQL过程已成功完成。
10.1.3游标属性
1.
2.
3.
%ISOPEN属性
%FOUND属性与%NOTFOUND属性
%ROWCOUNT属性
1.
%ISOPEN属性
%ISOPEN属性判断游标是否被打开,如果游
标被打开,则%ISOPEN于TRUE,否则%ISOPEN
于FALSE。
【例10.7】
下面地代码演示当使用未打开地游标时,将会出现错