`
孔雀王子
  • 浏览: 42158 次
  • 性别: Icon_minigender_1
  • 来自: 河北
文章分类
社区版块
存档分类
最新评论

Oracle 10g数据库管理、应用与开发(二十)

阅读更多

23.2.7 游标变量

                        游标变量也可以处理多行查询结果集。游标变量的定义包括两个步骤:

1)定义cursor类型的指针

语法:

                                   Type ref_cursor_name is ref cursor[return return_type]

举例:

                                 Type var_cursor_name is ref cursor;

2)定义ref cursor类型的变量

                                   v_rc  var_cursor_name;

综合写法如下:

                                 Type var_cursor_name is ref cursor;

                                 v_rc  var_cursor_name;

上面的综合声明的游标变量称为弱ref cursor类型,因为它没有指明游标返回的结果,因此它可以指向任何一个具有多列的select查询结果。相对于上面还有一种称为强ref cursor类型。

声明方式如下:

                                 Type varcursorName is ref cursor return emp%rowtype; //指明了返回的结果

                                 Vcn varcursorName; //声明一个强的ref cursor类型的变量

使用游标变量与游标使用方式一样,也需要声明,打开,检索,关闭游标变量。

23.2.8 综合案例

SQL> declare
  			2  
  			3  type emp_cname is ref cursor return emp%rowtype;  //声明游标变量第一步
  			4  
 		 	5  ecname emp_cname;  //声明游标变量第二步
  			6  
  			7  emp_row emp%rowtype; //声明用于保存检索数据的变量
  			8  
  			9  begin
 			10      dbms_output.put_line('开始');
 	11      open ecname for select * from emp where empno=7934; //打开游标变量
 			12      loop
 			13       fetch ecname into emp_row; //查询结果赋值给保存的变量
 			14       exit when ecname%notfound;  //退出条件
 			15       dbms_output.put_line(emp_row.ename); //输出结果
 			16      end loop; //退出循环
 			17      close ecname;  //关闭游标变量
 			18    dbms_output.put_line('结束');
 			19  end;
 			20  /
开始
MILLER
结束
			
//复杂的案例(游标的循环遍历)
SQL> declare
  			2  
  			3  type emp_cname is ref cursor return emp%rowtype;
  			4  
  			5  ecname emp_cname;
  			6  
  			7  emp_row emp%rowtype;
  			8  
  			9  begin
 			10      dbms_output.put_line('开始');
 			11      open ecname for select * from emp;
 		12      loop
 			13       fetch ecname into emp_row;
 			14       exit when ecname%notfound;
 			15       dbms_output.put_line(emp_row.ename);
 			16      end loop;
 			17      close ecname;
 			18    dbms_output.put_line('结束');
 			19  end;
 			20  /
 			
开始
SMITH
ALLEN
WARD
JONES
MARTIN
BLAKE
CLARK
SCOTT
KING
TURNER
ADAMS
JAMES
FORD
MILLER
 			
结束

 

23.29 使用游标更新数据库

定位游标之后就可以进行删除(修改)指定的数据行。更新的时候需要使用for update选项,语法如下:

Cursor cursor_name is select_statement;

For update[of column[,column],[nowait]]

Of用来指定要锁定的列,如果忽略of那么表中选择的数据行都将锁定。如果被锁定行已经被锁定了,那么必须等待释放才能锁定对于这种情况我们可以使用nowait语句。

当使用for update语句声明游标后,可以再delete|update语句中使用where current of子句,修改|删除游标结果集中当前行对应的表中的数据。

                           语法如下:

                               Where { current of cursor_name|search_condition}

举例说明:

SQL> declare
  			2  
  			3   cursor ecname is select * from emp where empno=7934
  			4   for update of sal nowait;
  			5  
  			6   esal number(7,2);
  			7  
  			8  
  			9  begin
 			10      dbms_output.put_line('开始');
 			11  
 			12      for r in ecname loop
 			13      esal:=r.sal*10;
 			14      update emp set sal=esal where current of ecname;
 			15      end loop;
 			16  
 			17     dbms_output.put_line('结束');
 			18  end;
 			19  /
 			
开始
结束

  

0
4
分享到:
评论

相关推荐

    Oracle 10g数据库管理、应用与开发标准教程

    由浅入深地介绍了Oracle 10g系统的使用方法和基本管理。...本书全面介绍使用Oracle数据库管理应用与开发知识,适合作为普通高校计算机专业Oracle教材,也可以作为Oracle数据库开发和应用人员的参考资料。

    Oracle10g数据库管理与应用系统开发光盘

    Oracle10g数据库管理系统是...以上是Oracle10g数据库管理系统的主要知识点,对于数据库管理与应用系统开发有着深远的影响。通过学习和掌握这些内容,可以有效地管理和开发高效、稳定、安全的Oracle数据库应用系统。

    ORACLE 10G数据库管理、应用与开发标准教程

    ORACLE 10G数据库管理、应用与开发标准教程

    Oracle 10g 数据库管理 应用与开发 标准教程 课后答案

    Oracle 10g数据库管理系统是企业级数据库解决方案,广泛应用于数据存储和管理。本教程主要涵盖了数据库的管理和开发,通过课后习题帮助学习者巩固理论知识和实践技能。以下是基于提供的部分章节内容展开的详细知识点...

    Oracle 11g中文版数据库管理、应用与开发标准教程

    Oracle 11g中文版数据库管理、应用与开发标准教程

    Oracle 10g数据库管理与应用系统开发.iso

    web开发学习的必备技术之一,软件开发的参考文档,熟能生巧,不久,自学者就能应用的得心应手,成为web开发的一位高手,也为网站制作爱好者的首选学习资料,专业,详细,全面,一份资料胜几分不够专业的资料文档,...

    oracle 10g数据库管理应用教程习题答案

    Oracle 10g数据库管理系统是Oracle公司推出的一款强大的关系型数据库产品,被广泛应用于企业级的数据存储、管理和分析。在“Oracle 10g数据库管理应用教程”这本教材中,作者马晓玉深入浅出地讲解了Oracle 10g的诸多...

    Oracle 11g数据库系统设计、开发、管理与应用

    《Oracle 11g数据库系统设计、开发、管理与应用》是一本全面涵盖Oracle数据库技术的专业教程,适合数据库管理员(DBA)、开发人员以及对Oracle技术感兴趣的学者学习。PDF格式的书籍便于电子阅读和存储,使得读者可以...

    Oracle 10g 数据库管理 应用与开发 标准教程 课后习题答案

    以上总结了《Oracle10g数据库管理应用与开发》一书中的部分知识点,包括Oracle数据库的物理与逻辑存储结构、SQL语言的基础语法、数据操作方法以及数据库对象的管理等内容。这些知识点对于学习和掌握Oracle数据库的...

    Oracle10g数据库管理 应用与开发 标准教程 课后简答题

    ### Oracle10g数据库管理应用与开发标准教程关键知识点解析 #### 表空间与数据文件的关系 在Oracle10g数据库管理系统中,表空间(Tablespace)与数据文件(Datafile)之间的关系至关重要。表空间作为数据库逻辑上...

    oracle10g数据库管理应用与开发课后答案借鉴.pdf

    Oracle 10g 数据库管理应用与开发课后答案借鉴.pdf 资源摘要信息涵盖了 Oracle 10g 数据库管理和开发相关的知识点,以下是该资源的详细说明: 物理存储结构 Oracle 数据库系统的物理存储结构主要由三个文件组成:...

    Oracle10g数据库管理与应用系统开发光盘.rar

    总结,Oracle 10g数据库管理系统为数据库管理员和开发者提供了强大的工具和特性,从高性能的数据存储到灵活的应用系统开发,再到可靠的灾难恢复机制,都是其突出亮点。理解并熟练掌握这些知识点,对于在Oracle环境中...

    Oracle 9i10g 数据库管理详细

    ### Oracle 9i/10g 数据库管理详细知识点 #### 一、Oracle 9i/10g 概述 - **Oracle 9i** 和 **Oracle 10g** 是Oracle公司推出的两个重要的数据库管理系统版本。这些版本在企业级数据库管理领域具有重要意义。 - *...

    Oracle10g数据库管理应用开发标准教程习题.docx

    Oracle 10g 数据库管理应用开发标准教程习题 本文档主要介绍 Oracle 10g 数据库管理应用开发标准教程习题,涵盖了数据库管理、物理存储结构、逻辑存储结构、实例系统、SQL 语言等方面的知识点。 物理存储结构 ...

    ORACLE 10G FORMS BUILDER WEB数据库开发与应用_11474943

    该内容为电子书ORACLE 10G FORMS BUILDER WEB数据库开发与应用_11474943,此电子书为高清版本

    Oracle 10g 数据库管理 应用开发 标准教程 思考与练习.pdf

    "Oracle 10g 数据库管理应用开发标准教程思考与练习.pdf" 本资源是 Oracle 10g 数据库管理应用开发标准教程的思考与练习指南,旨在帮助读者深入了解 Oracle 数据库管理和应用开发的基本概念和技术。本资源主要涵盖 ...

    Oracle+10g+数据库管理艺术

    Oracle 10g数据库管理系统是Oracle公司发布的一款重要的数据库产品,尤其在企业级应用中广泛使用。本资料集“Oracle 10g 数据库管理艺术”深入探讨了Oracle 10g版本中的核心特性和管理技巧,旨在帮助数据库管理员...

    Oracle 10g 数据库管理 应用开发 标准教程 思考与练习.docx

    Oracle 10g 数据库管理应用开发标准教程思考与练习 本资源主要集中在 Oracle 10g 数据库管理、应用开发和标准教程的思考与练习中。该资源涵盖了 Oracle 数据库的物理存储结构、逻辑存储结构、实例系统、服务器模式...

    《Oracle 10g数据库管理》源代码-2881

    Oracle 10g数据库管理系统是Oracle公司发布的一款企业级数据库产品,它在数据库管理、性能优化、安全性以及可扩展性方面都有显著的提升。对于Oracle编程人员来说,掌握Oracle 10g的相关知识和源代码至关重要,这有助...

Global site tag (gtag.js) - Google Analytics