文档详情

Oracle12c数据库基础教程Oracle12c数据库游标存储过程和触发器.pptx

发布:2025-04-04约1.72万字共114页下载文档
文本预览下载声明

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】

下面地代码演示当使用未打开地游标时,将会出现错

显示全部
相似文档