`

Oracle游标

    博客分类:
  • DB
 
阅读更多

一、游标

      游标-----内存中的一块区域,存放的是select 的结果。    

      游标用来处理从数据库中检索的多行记录(使用SELECT语句)。利用游标,程序可以逐个地处理和遍历一次检索返回的整个记录集。

二、游标类别

     游标包括显式游标和隐式游标。

1、显式游标

      显示游标被用于处理返回多行数据的SELECT 语句,游标名通过CURSOR….IS 语句显示地赋给SELECT 语句。

       在PL/SQL中处理显示游标所必需的四个步骤:

       1)声明游标;CURSOR cursor_name IS select_statement

       2)为查询打开游标;OPEN cursor_name

       3)取得结果放入PL/SQL变量中;

              FETCH cursor_name INTO list_of_variables;

              FETCH cursor_name INTO PL/SQL_record;

       4)关闭游标。CLOSE cursor_name

       注意:在声明游标时,select_statement不能包含INTO子句。当使用显示游标时,INTO子句是FETCH语句的一部分。

2、隐式游标

           在 PL/SQL 程序中执行DML SQL 语句时自动创建隐式游标,名字固定叫sql。

  在PL/SQL中使用DML语句时自动创建隐式游标 

  隐式游标自动声明、打开和关闭,其名为 SQL 

  通过检查隐式游标的属性可以获得最近执行的DML 语句的信息 

  隐式游标的属性有: 

                %FOUND – SQL 语句影响了一行或多行时为 TRUE 

%NOTFOUND – SQL 语句没有影响任何行时为TRUE 

%ROWCOUNT – SQL 语句影响的行数 

%ISOPEN - 游标是否打开,始终为FALSE

三、游标属性

Oracle 游标有4个属性:%ISOPEN,%FOUND,%NOTFOUND,%ROWCOUNT。

  %ISOPEN判断游标是否被打开,如果打开%ISOPEN等于true,否则等于false;

  %FOUND %NOTFOUND判断游标所在的行是否有效,如果有效,则%FOUNDD等于true,否则等于false;

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

 

 

--游标声明 cursor  cursor_name is select_statement
-------------------------------------------------------------------------------------------
--For 循环游标
--(1)定义游标
--(2)定义游标变量
--(3)使用for循环来使用这个游标
declare
    cursor c_user
    is
    select * from tuser order by id asc;
    --定义一个游标变量v_row c_user%ROWTYPE ,该类型为游标c_user中的一行数据类型
    c_row c_user%rowtype;
begin
    for c_row in c_user loop
      dbms_output.put_line(c_row.id||'  name  '||c_row.name);
     end loop;
end;


-----------------------------------------------------------------------------------------------
--Fetch游标
--使用的时候必须要明确的打开和关闭
declare
    cursor c_user
    is 
    select * from tuser order by id asc;
    c_row c_user%rowtype;
begin
    open c_user;
    loop
    --提取一行数据到c_row
    fetch c_user into c_row;
    --判读是否提取到值,没取到值就退出
    --取到值c_job%notfound 是false 
    --取不到值c_job%notfound 是true
    exit when c_user%notfound;
    dbms_output.put_line(c_row.id||'  name  '||c_row.name);
    end loop;
    close c_user;
end;


--------------------------------------------------------------------------------------
--参数游标(for方式)
declare
   cursor c_role(p_roleid varchar2)
   is
   select u.id id,u.name name,u.address address,r.roleid roleid,r.name rolename from tuser u,trole r where u.roleid=r.roleid and r.roleid=p_roleid;
   --必须定义别名
   c_row c_role%rowtype;
begin
   for c_row in c_role('1') loop
     dbms_output.put_line(c_role%rowcount||'  '||c_row.id||' '||c_row.rolename);
   end loop;
 
end;

---------------------------------------------------------------------------------------
--参数游标(fetch方式)
declare
   cursor c_role(p_roleid varchar2)
   is
   select u.id id,u.name name,u.address address,r.roleid roleid,r.name rolename from tuser u,trole r where u.roleid=r.roleid and r.roleid=p_roleid;
   --必须定义别名
   c_row c_role%rowtype;
begin
   open c_role('1');
   loop
   fetch c_role into c_row;
     exit when c_role%notfound;
     dbms_output.put_line(c_role%rowcount||'  '||c_row.id||' '||c_row.rolename);
   end loop;
   close c_role;
end;

----------------------------------------------------------------------------------------
--更新操作
declare
    cursor c_user_update
    is
    select * from tuser for update of tuser.id;
    c_row c_user_update%rowtype;
    --定义一个变量,类型与表中指定字段的类型一致
    c_name tuser.name%TYPE;
begin 
    for c_row in c_user_update loop
    if c_row.name='name' then
      c_name:=c_row.name||'---';
      dbms_output.put_line(c_name);
    end if;
    update tuser set name=c_name where CURRENT OF c_user_update;
    end loop;
end;

 

 

参考:http://www.2cto.com/database/201501/371435.html

          http://www.cnblogs.com/sc-xx/archive/2011/12/03/2275084.html

分享到:
评论

相关推荐

    oracle游标的总结oracle游标的总结

    Oracle 游标概述 Oracle 游标是 Oracle 数据库中的一种重要概念,用于查询数据库,获取记录集合(结果集)的指针。游标可以看作是一个临时表,你可以对其每一行的数据进行任意的操作。本文将对 Oracle 游标的概念、...

    ORACLE 游标使用示例

    下面,我们将深入探讨Oracle游标的使用示例及其相关的知识点。 首先,游标的基本概念是它提供了一种方式来跟踪并控制SQL查询的结果集。在Oracle中,游标有四种状态:未打开、已打开、正在提取和已关闭。以下是一个...

    Oracle游标使用大全

    ### Oracle游标使用详解 #### 一、Oracle游标简介 在Oracle数据库中,游标是一种重要的机制,用于处理查询结果集。它允许用户通过PL/SQL编程语言逐行访问和处理查询返回的数据记录。游标可以是显式定义的(即在...

    oracle游标使用大全

    总之,Oracle游标提供了处理查询结果的强大工具,使开发者能够灵活地在PL/SQL中操作数据。无论是隐式还是显式游标,都极大地增强了对数据库的交互能力,使得程序能根据查询结果进行适当的操作。理解并熟练运用游标是...

    Oracle游标使用案例大全

    Oracle游标是数据库编程中非常重要的一个概念,主要用于处理SQL查询的结果集。游标允许我们按行处理数据,逐条读取结果集,而不仅仅是一次性获取所有数据。在Oracle数据库中,游标对于复杂的事务处理、动态SQL以及...

    Oracle游标使用方法及语法大全

    Oracle 游标使用方法及语法大全 Oracle 游标是 PL/SQL 程序中的一种重要组件,用于处理查询结果集。游标可以分为隐式游标和显式游标两种,隐式游标由 PL/SQL 管理,隐式游标打开时查询开始,查询结束时隐式游标自动...

    oracle游标使用及实例

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

    Oracle游标使用方法及语法大全.doc

    ### Oracle游标使用详解 #### 一、游标概述 游标是Oracle数据库中用于处理查询结果集的强大工具,尤其适用于需要逐行处理查询结果的情况。在Oracle中,游标可以分为两类:**显式游标**和**隐式游标**。 1. **隐式...

    oracle游标学习资料

    Oracle游标是数据库编程中非常重要的一个概念,它允许开发者逐行处理查询结果集,而不仅仅是一次性处理所有数据。在Oracle中,游标分为隐式游标和显式游标。 **一、游标简介** 游标的核心功能是提供一种方式来遍历...

    Oracle游标使用详解

    根据提供的标题、描述以及部分代码内容,我们可以详细探讨Oracle游标的使用方法,特别是明确游标(Explicit Cursor)和隐式游标(Implicit Cursor)的区别及其具体应用方式。 ### Oracle游标简介 在Oracle数据库中...

    Oracle 游标使用大全.pdf

    通过本篇Oracle游标的使用大全,我们可以了解到Oracle数据库游标的类型、属性以及如何在PL/SQL中实现对数据集的逐行处理。这不仅有助于提升程序员的编程技能,也能使他们更深入地理解PL/SQL与Oracle数据库之间的交互...

    oracle游标使用大全1.txt

    ### Oracle游标使用详解 #### 一、Oracle游标简介 在Oracle数据库中,游标是一种用于处理查询结果集的强大工具。它允许用户通过逐行访问数据来执行复杂的操作,如更新、删除或插入记录等。游标可以分为显式游标和...

    oracle 游标 深入浅出 详解 精析 示例

    Oracle游标是数据库管理系统中的一种重要机制,它允许程序员逐行处理查询结果集,而不仅仅是一次性获取所有数据。游标类似于C语言中的指针,能够灵活、高效地处理多条记录,尤其在需要循环处理或者根据当前行数据做...

    快速练习ORACLE游标习题及答案

    根据提供的文件信息,我们可以归纳出以下Oracle游标的使用方法及相关知识点: ### 一、游标的基本概念 在Oracle数据库中,游标是一种重要的机制,它允许用户从查询结果集中逐行检索数据。游标可以分为两种类型:**...

    ORACLE游标与异常处理

    首先,让我们来理解Oracle游标。游标是数据库系统提供的一种机制,允许用户在结果集上进行迭代,一次处理一行数据。在PL/SQL中,游标用于检索SQL查询返回的结果集,并按需逐行处理。以下是一个简单的游标使用示例: ...

    oracle游标优化

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

Global site tag (gtag.js) - Google Analytics