oracle 教程 第7章 游标和异常处理
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字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [高等教育]一年级家长课程教案
- [高等教育]封丘县人民医院深入推进纠正医药购销领
- [高等教育]2017年6月大学英语四级真题试卷及答案(
- [高等教育]2017年北京第二外国语学院文学院824中
- [高等教育]7 高中历史第7单元1861年俄国农奴制改
- [高等教育]【K12学习】4、实际测量-苏教版六年级
- [高等教育]药具培训试卷题库及部分参考答案
- [高等教育]本土电子元器件目录分销商如何赢得生意
- [高等教育]七年级岭南版美术教案
- [高等教育]书作文之书法活动通讯稿
- [高等教育]Endnote X 软件使用入门和用法总结(LS)
- [高等教育]嵌入式系统的现状及发展状况
- [高等教育]2012抗菌药物专项整治活动方案解读
- [高等教育]人教版新课本一年级数学下册期末试卷
- [高等教育]爱课程民法学观后感
- [高等教育]930机组使用说明书1
- [高等教育]煤气设备设施点检标准
- [高等教育]常见室内观叶植物图解
- [高等教育]312党员群众路线心得体会
- [高等教育]小学信息(苗版)第一册全册教案
- 在市---局2010党建大会上的讲话
- 《科哲》提纲及补充阅读材料(2010.7)
- 苏州高博软件技术职业学院论文开题报告
- 兼职导游管理的困境及对策探讨
- 基于通用设计理念的现代厨房产品语义研
- 康乐一中2010年至2011年度鼓号队、花束
- 第10章_数据收集整理与描述_期末复习课
- 2008年黑龙江林甸商贸购物中心营销策划
- 水硬度的测定实验报告
- 五分钟教你拍摄夜景光绘照
- 2014年临床妇产科三基三严试题及答案
- 0第二课 纾解压力第一站了解压力
- 解析建筑工程电气设备安装施工技术要点
- 地方性应用型本科高校“双师型”师资队
- 高考语文专题复习课件:小说阅读指导
- 装饰工程投标书2
- 大学生就业难问题探讨及对策
- English and Its History
- 青岛市城市房屋修缮工程质量监督管理办
- 初中英语形容词和副词的用法和练习题




