`
jeelee
  • 浏览: 636919 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

oracle学习笔记(第八章:游标)

阅读更多
游标Cursor (有带参数的游标和不带参数的游标) :
使用步骤:
1,定义游标 :
Cursor  cur _name  is  select 语句;-- 不带参数
Cursor  cur_name(v_var datatype default) is select 语句;-- 带参数语句
2,打开游标 :
Open cur_name; -- 不带参数
Open cur_name(value); -- 带参数语句,打开时必须给变量赋值,如果变量有默认值,可以不赋值
3,提取数据 :
Fetch cur_name into v_var;-- 常用在循环语句中
4,关闭游标 :
Close cur_name;

可以将游标放在 for 循环中,这样就不需要 打开,提取,关闭游标步骤
可以使用 %found , %notfound 得知游标是否检索到数据,使用 %rowcount 游标检索到多少行数据


如果要没有找到数据退出游标可以使用 exit when cur_name%notfound;
例子1(不带参数):
DECLARE
  VEMP_NO   EMP_M.EMP_NO%TYPE;
  VEMP_NAME EMP_M.EMP_NAME%TYPE;
  VEMP_SEX  EMP_M.EMP_SEX%TYPE;
  CURSOR CUR_TEST IS SELECT EMP_NO FROM EMPM;
BEGIN
  OPEN CUR_TEST;
  LOOP
    FETCH CUR_TEST  INTO VEMP_NO, VEMP_NAME, VEMP_SEX; --如果用Fetch语句提取光标中的行﹐那么into后面的参数必须与游标中select中的列数相同﹐且一一对应
    DBMS_OUTPUT.PUT_LINE(VEMP_NO);
    EXIT WHEN CUR_TEST%NOTFOUND;
  END LOOP;
  CLOSE CUR_TEST;
END;
例子2(带参数):
declare
cursor parm_cur(vemp_age number) is select  emp_nm from empm where age>vemp_age;
vemp_name varchar2(10);
begin
open parm_cur(22);
        loop
        fetch parm_cur into vemp_name; 
    dbms_output.put_line(vemp_name);
    exit when parm_cur%notfound;  
end loop;
close parm_cur;            
end;
例子3:
DECLARE
  CURSOR cur_parm(v_Age INT) IS SELECT EMP_NM FROM EMPM WHERE age = v_Age;
BEGIN
  FOR  I  IN cur_parm(22) LOOP
    DBMS_OUTPUT.PUT_LINE(I.EMP_NM);
  END LOOP; --循环结束后﹐不需要用close命令关闭光标
END;

游标变量:
使用cursor变量﹐可以动态的决定select语句
建立 cursor 变量﹕
1.  定义一个 REF CURSOR 型态.
2.  宣告 cursor 变量.
3.  开启 cursor 变数并与查询关连
declare
type empm_type is ref cursor return empm%rowtype;--确定了cursor查询结果返回的类型 (当然也可以不确定返回类型)
cur_type empm_type;
empm_rec empm%rowtype;
begin
open cur_type for select * from empm where emp_no = '001';--动态的决定select语句
loop
fetch cur_type into empm_rec;
exit when cur_type%notfound;
dbms_output.put_line('emp_no='||empm_rec.emp_no||','||'emp_name='||empm_rec.emp_nm);
end loop;
close cur_type;
dbms_output.put_line('-------------------------------------------------');
  open cur_type for select * from empm;--动态的决定select语句
  loop
    fetch cur_type into empm_rec;
    exit when cur_type%notfound;
    dbms_output.put_line('emp_no='||empm_rec.emp_no||','||'emp_name='||empm_rec.emp_nm);
  end loop;
  close cur_type;
end;

游标与 update 语句 cursor for update,用来更新检索到的数据
DECLARE
CURSOR cur IS SELECT * FROM empm WHERE age <= 30 FOR UPDATE OF age;
BEGIN
     FOR i IN cur LOOP
         UPDATE empm SET age =22 WHERE CURRENT OF cur;
         COMMIT;
     END LOOP;
END ;

分享到:
评论

相关推荐

    ORACLE学习笔记2:日常应用、深入管理、性能优化.

    第8章 常用数据操纵语言 第9章 备份和恢复数据库 第2篇 深入管理 第10章 数据库网络配置 第11章 PL/SQL语言基础 第12章 存储过程和触发器 第13章 游标 第14章 任务调度 第15章 事务与锁定 第3篇 系统优化 ...

    oracle学习笔记

    ### Oracle学习笔记精要 #### 第一章:Oracle概述与启动方法 - **Oracle简介**:Oracle是由美国甲骨文公司开发的一款关系型数据库管理系统,广泛应用于企业级应用环境中。 - **Oracle版本演变**: - Oracle8i:...

    Oracle学习笔记.doc

    ### Oracle学习笔记知识点详解 #### 一、SQL概述与Oracle简介 - **SQL**(Structured Query Language,结构化查询语言)是一种用于管理关系型数据库的标准语言。它被用来执行各种数据库操作,如查询数据、更新数据...

    oracle 学习笔记资料

    Oracle是世界上最广泛使用的数据库管理系统之一...以上就是根据给定文件名推测的Oracle学习笔记资料可能涵盖的主要知识点。通过深入学习和实践,可以掌握Oracle数据库的使用和管理,从而在IT领域中提升自己的专业能力。

    Oracle学习笔记

    ### Oracle学习笔记知识点详解 #### 第一章:Oracle入门 **1. Oracle的物理结构** - **Oracle的主要组件** - **Oracle服务器**:由Oracle数据库和Oracle实例组成。 - **Oracle实例**:指后台进程和内存结构的...

    oracle十八天学习笔记

    本"Oracle十八天学习笔记"涵盖了Oracle数据库的基础到高级概念,旨在帮助初学者和有一定经验的开发者深入理解Oracle的核心技术和应用。 第1天:Oracle简介与安装配置 在第一天的学习中,我们将了解Oracle的历史背景...

    oracle_sql笔记

    Oracle SQL是数据库管理员和开发人员在Oracle数据库系统中进行数据查询和管理的重要工具。这篇笔记主要涵盖了Oracle SQL的...这两份“Oracle SQL笔记”文档应包含了上述各个方面的详细解释和实例,值得仔细阅读和学习。

    Oracle数据库课堂笔记

    第八讲:Oracle数据库的管理 数据库管理包括表空间、数据文件、回滚段、索引、触发器和存储过程的管理。表空间是逻辑存储单元,数据文件则存储实际数据。回滚段用于事务回滚,索引提升查询效率,而触发器和存储过程...

    Oracle 学习笔记

    以上就是从给定文件的标题、描述、标签及部分内容中提取出来的Oracle学习笔记中的关键知识点,这些内容覆盖了SQL并行查询、表分区数据删除、集合操作、NULL处理、会话限制、字段引用以及绑定变量的使用等方面。...

    oracle 课堂笔记

    这些"Oracle课堂笔记"详细地涵盖了Oracle的基础知识到高级特性,是学习Oracle数据库的理想资源。 笔记可能包含了以下几个重要的知识点: 1. **Oracle数据库架构**:Oracle采用多层架构,包括用户接口层、应用...

    Oracle_SQL学习笔记

    ### Oracle SQL 学习笔记关键知识点详解 #### 并行查询与DML操作 并行查询在Oracle中是一项提升查询性能的重要技术,特别是在处理大数据量的表时。通过`ALTER SESSION ENABLE PARALLEL DML`语句,我们可以开启当前...

    Oracle培训18天笔记

    第八天至第十天:数据库对象 1. 表的设计:理解表的结构,包括字段、数据类型、约束(主键、外键、唯一性约束等)。 2. 索引:创建和管理B树、位图索引,优化查询性能。 3. 视图与同义词:理解视图的作用,创建和...

    Java/JavaEE 学习笔记

    Oracle学习笔记...............121 前言....................................121 第一章 Selecting Rows.....................124 第二章 Limiting Selected Rows.......127 第三章 Single Row Functions.............

    oracle 学习 资料

    8. 高可用性:了解Oracle的高可用性解决方案,如RAC(Real Application Clusters)、Data Guard、GoldenGate等,以及它们的配置和维护。 9. 分区技术:学习Oracle的分区功能,包括范围分区、列表分区、哈希分区等,...

    Oracle_SQL学习笔记.doc

    这些是Oracle SQL学习中的一些基础和进阶知识点,它们对于高效地管理Oracle数据库至关重要。理解并熟练掌握这些概念,可以帮助你编写更高效、更稳定的SQL语句,优化数据库性能,并确保数据的一致性和完整性。

    oracle培训18天笔记

    第八天至第十天:索引与性能优化 1. 索引类型:B树索引、位图索引、唯一性索引等,以及何时使用它们。 2. SQL性能分析:使用EXPLAIN PLAN和性能视图进行SQL性能分析。 3. 优化器:理解CBO(成本基优化器)和RBO...

    0racle笔记,从第一天开始学到的所有Oracle知识点

    这份"Oracle笔记"涵盖了从基础到高级的所有Oracle知识点,是学习和复习Oracle的理想资料。以下是一些关键的学习要点: 1. **Oracle简介**:Oracle数据库是一种关系型数据库管理系统(RDBMS),由Oracle公司开发,...

Global site tag (gtag.js) - Google Analytics