`

Oracle 游标【实例】

 
阅读更多
1、概念

游标:从字面来理解就是游动的光标。用数据库语言来描述,游标是映射在结果集中一行数据上的位置实体,有了游标,用户就可以访问结果集中的任意一行数据了。将游标放置到某行后,即可对该行数据进行操作,最常见的操作是提取当前行数据。

2、分类

2.1、静态游标:显式游标、隐式游标

2.2、动态游标:强类型(限制)、弱类型(非限制)


3、显式游标的属性

3.1、%ISOPEN  判断游标是否被打开,若打开,则%ISOPEN等于TRUE;否则等于FALSE。

3.2、%FOUND    判断游标所在行是否有效。若有效,则%FOUND等于TRUE;否则等于FALSE。

3.3、%NOTFOUND  与%FOUND相似,功能相反。

3.4、%ROWCOUNT  返回到当前位置为止,游标所读取的记录行数。

4、隐式游标的属性
3.1 SQL%ROWCOUNT
3.2 SQK%FOUND
3.3 SQL%NOTFOUND
3.4 SQL%ISOPEN

示例

--fetch游标
declare
  e_empno scott.emp.ename%type;
  e_ename scott.emp.ename%type;
  cursor emp_cursor is
    select empno, ename from scott.emp;
begin
  open emp_cursor;
  for i in 1 .. 10 loop
    fetch emp_cursor
      into e_empno, e_ename;
    dbms_output.put('部门编号是' || e_empno);
    dbms_output.put_line('  员工姓名是' || e_ename);
  end loop;
  close emp_cursor;
end;

--for循环游标
declare
   cursor emp_cursor is
     select deptno, ename from scott.emp;
 begin
   --隐式地打开游标并对游标进行提取 
   for emp_record in emp_cursor loop     
     if emp_record.deptno = 30 then
       dbms_output.put_line('name is ' || emp_record.ename);
     end if;
   end loop;
 end;

--或者也不需要预先定义一个游标 如下
begin
   for emp_record in (select deptno, ename from scott.emp) loop
     if emp_record.deptno = 30 then
       dbms_output.put_line('name is ' || emp_record.ename);
     end if;
   end loop;
 end;

--参数化的游标
declare
  v_empno scott.emp.empno%type;
  v_ename scott.emp.ename%type;
  cursor emp_cursor(p_deptno number, p_job varchar2) is
    select empno, ename
      from scott.emp
     where deptno = p_deptno
       and job = p_job;
begin
  open emp_cursor(30, 'SALESMAN');
  loop
    fetch emp_cursor
      into v_empno, v_ename;
    exit when emp_cursor%notfound or emp_cursor%notfound is null;
    dbms_output.put_line('empno is ' || v_empno || 'and ename is ' ||
                         v_ename);
  end loop;
end;

--select for update 游标
declare
  cursor esal_cursor is
    select sal from empbak 
    where deptno = 30
    for update of sal nowait;
begin
  for emp_record in esal_cursor loop
    update empbak set sal = sal * 1.10 
    where current of esal_cursor; --必须有的
  end loop;
  commit;
end;


有时候需要在游标循环中修改提取出来的数据行,这个时候就需要用for update 游标。





分享到:
评论

相关推荐

    Oracle游标实例.txt

    标题“Oracle游标实例”直接点明了文章的主题,即通过具体的示例来讲解Oracle中的游标使用方法。描述重复了标题内容,这表明文件的主要目的是提供关于Oracle游标的实例代码,供学习和参考。 ### 标签 标签“Oracle...

    oracle游标使用及实例

    ### Oracle游标使用及实例详解 #### 一、Oracle游标概述 在Oracle数据库中,游标(Cursor)是一种用于处理SQL查询结果集的方式。它允许用户逐行地读取和处理查询结果,这对于需要对每一行数据进行特定操作的情况非常...

    oracle游标实例

    Oracle游标是数据库管理系统中处理查询结果的一种方法,它允许我们逐行处理数据,而不仅仅是一次性获取所有结果。在Oracle中,游标分为隐式游标和显式游标。 ### 隐式游标 Oracle数据库在执行DML(插入、删除、更新...

    ORACLE 游标使用示例

    在"游标.txt"文件中,可能包含了更多关于Oracle游标的使用实例和技巧,包括游标的声明、动态游标、游标变量、游标表达式以及游标在存储过程和函数中的应用。这些内容可以帮助你更深入地理解和掌握Oracle游标,提高你...

    Oracle游标的使用实例详解

    Oracle游标是数据库管理系统中的一种重要机制,它允许应用程序按需逐行处理查询结果集,而不是一次性处理所有数据。游标对于交互式和事务性的应用尤其有用,因为它们可以控制数据流并根据需要进行交互。 首先,让...

    Orcle游标实例.txt

    ### Oracle 游标实例解析及应用 #### 一、Oracle游标概述 在Oracle数据库中,游标(Cursor)是一种数据库对象,它允许程序能够逐行处理查询结果集中的数据。与直接执行SQL语句获取整个结果集不同,游标可以逐行...

    Oracle游标使用大全

    ### Oracle游标使用大全 #### 一、概述 在Oracle数据库中,游标是一种重要的机制,用于处理查询结果集中的数据。游标允许程序逐行处理数据,这在需要对多行数据进行循环处理时非常有用。本文档旨在提供一个全面的...

    oracle游标优化

    ### Oracle游标优化 在Oracle数据库管理中,游标是一种重要的机制,用于处理查询结果集。游标可以被看作是存储查询结果的一种临时区域,它允许用户通过循环逐行处理这些结果。游标不仅可以提高应用程序的灵活性,还...

    多个ORACLE 游标+SQL 游标 小例子+帮助文档

    本教程将深入介绍Oracle和SQL中的游标概念,以及如何通过实例来理解和应用它们。 首先,我们要明白什么是游标。游标(Cursor)是一个数据库系统组件,它允许我们在查询结果集中移动,一次处理一行数据。这在处理...

    oracle游标的用法

    oracle游标的用法,比较通俗易懂的讲解游标用法,有实例

    oracle 的函数、存储过程、游标、简单实例

    本主题将深入探讨Oracle中的几个核心概念:函数、存储过程、游标以及简单的实例,这些都是数据库管理员和开发人员日常工作中不可或缺的部分。 首先,我们来了解**Oracle函数**。函数是预定义的代码块,接受零个或多...

    详解Oracle游标的简易用法

    本篇将详细解释Oracle游标的简易用法,并通过实例代码来演示如何使用。 首先,游标定义了一个SQL查询的结果集,但并不立即执行该查询。在Oracle中,游标由`DECLARE`语句定义,可以包括变量、条件等。例如: ```sql...

    既简单,又使用的游标实例

    以下是对"既简单,又使用的游标实例"的详细解释。 游标,英文名为Cursor,是数据库管理系统(DBMS)提供的一种机制,用于在查询结果集中移动并处理单个记录。它在关系数据库中起着类似指针的作用,可以定位到结果...

    游标实例与返回结果集的存储过程

    根据提供的文件信息,我们可以深入探讨其中涉及的关键概念和实践应用,包括Oracle中的游标使用方法、存储过程的定义以及如何创建并调用返回结果集的存储过程。 ### 1. 游标的使用方法 #### 1.1 游标基本概念 在...

    触发器,游标实例

    在PL/SQL(Oracle的编程语言)中,游标允许我们通过声明、打开、提取和关闭等步骤来遍历和操作数据。在上述例子中,定义了一个名为`cur_age`的游标,用于从`t_borrowRecord`表中选取特定学生的所有借书日期...

    Oracle存储过程实例使用显示游标

    在本例中,“Oracle存储过程实例使用显示游标”着重展示了如何在存储过程中调用函数,并通过游标来处理和更新数据。 首先,我们需要了解存储过程的基本结构。一个存储过程通常包含以下部分: 1. **声明部分**:在...

    Oracle游标使用参考语句实例解析

    Oracle游标是数据库管理系统中的一种重要机制,它允许程序员按需逐行处理查询结果集,而不是一次性加载所有数据。游标对于处理大量数据时的效率和控制流程具有显著优势,尤其是在需要对每条记录进行单独操作或者需要...

    job 存储过程 视图 游标结合实例

    以上就是Oracle Job、存储过程、视图和游标在实际应用中的基本概念和结合实例,它们共同构成了数据库管理和自动化操作的重要部分。理解并熟练掌握这些工具,能显著提升数据库的管理和维护效率。

    ORACLE PLSQL实例精解(第4版) 中文版

    ### ORACLE PL/SQL 实例精解(第4版)知识点概述 #### 一、PL/SQL基础 **1.1 PL/SQL简介** - **定义**:PL/SQL(Procedural Language for SQL)是一种过程化语言,专门用于增强Oracle数据库的功能。它将SQL命令与...

    oracle精品实例,练习总结

    这个"oracle精品实例,练习总结"的压缩包文件显然包含了nickcheng个人整理的一系列关于Oracle数据库的操作实例和学习心得,旨在帮助用户深入理解和应用Oracle技术。下面我们将深入探讨Oracle数据库的一些关键知识点。...

Global site tag (gtag.js) - Google Analytics