教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 高等教育 >

oracle 教程 第7章 游标和异常处理

来源:网络收集 时间:2026-08-10
导读: oracle 教程 游标和异常处理 第7章 游标和异常处理 ORACLE 9i 第7章 游标和异常处理7.1 游标的概念 7.2 隐式游标 7.3 显式游标 7.4 异常处理 7.5 阶段训练 7.6 练 习 ORACLE 9i oracle 教程 游标和异常处理 第7章 游标和异常处理 ORACLE 9i 7.1 游标的概念游

oracle 教程 游标和异常处理

第7章 游标和异常处理

ORACLE 9i

第7章 游标和异常处理7.1 游标的概念 7.2 隐式游标 7.3 显式游标 7.4 异常处理 7.5 阶段训练 7.6 练 习

ORACLE 9i

oracle 教程 游标和异常处理

第7章 游标和异常处理

ORACLE 9i

7.1 游标的概念游标是SQL的一个内存工作区,由系统或用户以变量的形式定 义。游标的作用就是用于临时存储从数据库中提取的数据块。在某 些情况下,需要把数据从存放在磁盘的表中调到计算机内存中进行

处理,最后将处理结果显示出来或最终写回数据库。这样数据处理的速度才会提高,否则频繁的磁盘数据交换会降低效率。

ORACLE 9i

oracle 教程 游标和异常处理

第7章 游标和异常处理

ORACLE 9i

游标有两种类型:显式游标和隐式游标。在前述程序中用到的 SELECT...INTO...查询语句,一次只能从数据库中提取一行数据,对 于这种形式的查询和DML操作,系统都会使用一个隐式游标。但是 如果要提取多行数据,就要由程序员定义一个显式游标,并通过与 游标有关的语句进行处理。显式游标对应一个返回结果为多行多列 的SELECT语句。

游标一旦打开,数据就从数据库中传送到游标变量中,然后应用程序再从游标变量中分解出需要的数据,并进行处理。

ORACLE 9i

oracle 教程 游标和异常处理

第7章 游标和异常处理

ORACLE 9i

7.2 隐式游标如前所述,DML操作和单行SELECT语句会使用隐式游标, 它们是: * 插入操作:INSERT。

* 更新操作:UPDATE。* 删除操作:DELETE。 * 单行查询操作:SELECT ... INTO ...。

ORACLE 9i

oracle 教程 游标和异常处理

第7章 游标和异常处理

ORACLE 9i

当系统使用一个隐式游标时,可以通过隐式游标的属性来了 解操作的状态和结果,进而控制程序的流程。隐式游标可以使用 名字SQL来访问,但要注意,通过SQL游标名总是只能访问前一 个DML操作或单行SELECT操作的游标属性。所以通常在刚刚执 行完操作之后,立即使用SQL游标名来访问属性。游标的属性有 四种,如表7-1所示。

ORACLE 9i

oracle 教程 游标和异常处理

第7章 游标和异常处理

ORACLE 9i

表7-1 隐式游标属性隐式游标的属性 SQL%ROWCOUNT SQL%FOUND SQL%NOTFOUND SQL%ISOPEN 返回值类型 整型 布尔型 布尔型 布尔型 意 义

代表 DML 语句成功执行的数据行数 值为 TRUE 代表插入、删除、更新或单行查询操作 成功 与 SQL%FOUND 属性返回值相反 DML 执行过程中为真,结束后为假

ORACLE 9i

oracle 教程 游标和异常处理

第7章 游标和异常处理 【训练1】 否成功。 步骤1:输入和运行以下程序: SET SERVEROUTPUT ON BEGIN UPDATE emp SET sal=sal+100 WHERE empno=1234; IF SQL%FOUND THEN DBMS_OUTPUT.PUT_LINE('成功修改雇员工资!'); COMMIT; ELSE

ORACLE 9i 使用隐式游标的属性,判断对雇员工资的修改是

ORACLE 9i

oracle 教程 游标和异常处理

第7章 游标和异常处理 DBMS_OUTPUT.PUT_LINE('修改雇员工资失败!'); END IF; END; 运行结果为: 修改雇员工资失败! PL

/SQL 过程已成功完成。 步骤2:将雇员编号1234改为7788,重新执行以上程序: 运行结果为: 成功修改雇员工资! PL/SQL 过程已成功完成。

ORACLE 9i

说明:本例中,通过SQL%FOUND属性判断修改是否成功,并给出 相应信息。

ORACLE 9i

oracle 教程 游标和异常处理

第7章 游标和异常处理

ORACLE 9i

7.3 显式游标7.3.1 游标的定义和操作 游标的使用分成以下4个步骤。 1.声明游标 在DECLEAR部分按以下格式声明游标:

CURSOR 游标名[(参数1 数据类型[,参数2 数据类型...])]IS SELECT语句; 参数是可选部分,所定义的参数可以出现在SELECT语句的 WHERE子句中。如果定义了参数,则必须在打开游标时传递相应 的实际参数。

ORACLE 9i

oracle 教程 游标和异常处理

第7章 游标和异常处理

ORACLE 9i

SELECT语句是对表或视图的查询语句,甚至也可以是联合 查询。可以带WHERE条件、ORDER BY或GROUP BY等子句, 但不能使用INTO子句。在SELECT语句中可以使用在定义游标之 前定义的变量。 2.打开游标 在可执行部分,按以下格式打开游标:

OPEN 游标名[(实际参数1[,实际参数2...])];打开游标时,SELECT语句的查询结果就被传送到了游标工 作区。

ORACLE 9i

oracle 教程 游标和异常处理

第7章 游标和异常处理 3.提取数据

ORACLE 9i

在可执行部分,按以下格式将游标工作区中的数据取到变量 中。提取操作必须在打开游标之后进行。 FETCH 游标名 INTO 变量名1[,变量名2...]; 或 FETCH 游标名 INTO 记录变量; 游标打开后有一个指针指向数据区,FETCH语句一次返回指 针所指的一行数据,要返回多行需重复执行,可以使用循环语句来 实现。控制循环可以通过判断游标的属性来进行。

ORACLE 9i

oracle 教程 游标和异常处理

第7章 游标和异常处理 下面对这两种格式进行说明:

ORACLE 9i

第一种格式中的变量名是用来从游标中接收数据的变量,需 要事先定义。变量的个数和类型应与SELECT语句中的字段变量 的个数和类型一致。 第二种格式 一次将一行 数据取到记 录变量中, 需要使用 %ROWTYPE事先定义记录变量,这种形式使用起来比较方便,

不必分别定义和使用多个变量。定义记录变量的方法如下: 变量名 表名|游标名%ROWTYPE;

其中的表必须存在,游标名也必须先定义。

ORACLE 9i

oracle 教程 游标和异常处理

第7章 游标和异常处理 4.关闭游标 CLOSE 游标名;

ORACLE 9i

显式游标打开后,必须显式地关闭。游标一旦关闭,游标占用的资源

就被释放,游标变成无效,必须重新打开才能使用。以下是使用显式游标的一个简单练习。 【训练1】 用游标提取emp表中7788雇员的名称和职务。

SET SERVEROUTPUT ON DECLARE v_ename VARCHAR2(10); v_job VARCHAR2(10); CURSOR emp_cursor IS SELECT ename,job FROM emp WHERE empno=7788;

ORACLE 9i

oracle 教程 游标和异常处理

第7章 游标和异常处理 BEGIN OPEN emp_cursor; FETCH emp_cursor INTO v_ename,v_job;

DBMS_OUTPUT.PUT_LINE(v_ename||','||v_job); CLOSE emp_cursor; END; 执行结果为:

ORACLE 9i

SCOTT,ANALYSTPL/SQL 过程已成功完成。 说明:该程序通过定义游标emp_cursor,提取并显示雇员7788的名

称和职务。作为对以上例子的改进,在以下训练中采用了记录变量。

ORACLE 9i

oracle 教程 游标和异常处理

第7章 游标和异常处理 【训练2】 资。 SET SERVEROUTPUT ON DECLARE

ORACLE 9i 用游标提取emp表中7788雇员的姓名、职务和工

CURSOR emp_cursor IS SELECT ename,job,sal FROM emp WHERE empno=7788;

emp_record emp_cursor%ROWTYPE;BEGIN

ORACLE 9i

oracle 教程 游标和异常处理

第7章 游标和异常处理 OPEN emp_cursor; FETCH emp_curs …… 此处隐藏:2120字,全部文档内容请下载后查看。喜欢就下载吧 ……

oracle 教程 第7章 游标和异常处理.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/1705876.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)