`

Oracle遍历游标的几种方式

 
阅读更多

1.for循环

会自动open和close游标,自动定义了一个记录类型及声明该类型的变量,并自动fetch数据到这个变量中。
我们需要注意Emp_record这个变量无需声明,无需指定数据类型,具体的结构是由游标决定的。这个变量的作用域仅仅是在循环体内。
SET SERVEROUTPUT ON 
DECLARE
    CURSOR emp_cursor IS SELECT empno, ename FROM emp;  
BEGIN 
    FOR Emp_record IN emp_cursor LOOP     
        DBMS_OUTPUT.PUT_LINE(Emp_record.empno|| Emp_record.ename);  
    END LOOP;  
END;
 
--该种形式更为简单,省略了游标的定义,游标的SELECT查询语句在循环中直接出现
SET SERVEROUTPUT ON  
DECLARE  
  CURSOR emp_cursor IS    
  SELECT empno, ename FROM emp;   
BEGIN  
  FOR Emp_record IN emp_cursor LOOP      
      DBMS_OUTPUT.PUT_LINE(Emp_record.empno|| Emp_record.ename);   
  END LOOP;  
END;  
 
2.while循环
 
DECLARE 
 --  声明游标 
 CURSOR mycur IS SELECT * FROM emp ;   -- List (EmpPo) 
 empInfo emp%ROWTYPE ; 
BEGIN 
 --  游标操作使用循环,但是在操作之前必须先将游标打开 
 OPEN mycur ; 
 --  使游标向下一行 
 FETCH mycur INTO empInfo ; 
 --  判断此行是否有数据被发现 
      WHILE (mycur%FOUNDLOOP 
                  DBMS_OUTPUT.put_line('雇员编号:'||empInfo.empno) ; 
                  DBMS_OUTPUT.put_line('雇员姓名:'||empInfo.ename) ; 
                      -- 修改游标,继续向下 
                  FETCH mycur INTO empInfo ; 
        END LOOP ; 
        close mycur ; 
END ; 
 
3.loop循环
 
DECLARE 
  V_ename VARCHAR2(10);  
  CURSOR emp_cursor IS   
  SELECT ename FROM emp;  
BEGIN 
 OPEN emp_cursor;  
 IF emp_cursor%ISOPEN THEN 
LOOP  
   FETCH emp_cursor INTO v_ename;  
   EXIT WHEN emp_cursor%NOTFOUND;  
   DBMS_OUTPUT.PUT_LINE(to_char(emp_cursor%ROWCOUNT)||'-'||v_ename);  
  END LOOP;  
 ELSE 
  DBMS_OUTPUT.PUT_LINE('用户信息:游标没有打开!');  
 END IF;  
 CLOSE  emp_cursor;  
END;  
 

 

分享到:
评论

相关推荐

    Oracle数据库游标使用.rar

    在Oracle中,游标主要有以下几种类型: 1. **隐式游标**:每当执行一个SQL语句时,Oracle都会自动使用隐式游标。系统会自动处理游标的打开、提取和关闭,开发者通常无需直接管理。 2. **显式游标**:显式游标允许...

    Oracle游标使用详解

    `FOR`循环提供了一种更简洁的方式来遍历游标中的数据,它可以自动打开和关闭游标,同时将当前行的数据存储在一个匿名记录中。 ```sql CREATE OR REPLACE PROCEDURE PROC_STU3 AS BEGIN DECLARE CURSOR cur_...

    oracle函数触发器游标等几个小例子

    3. **Oracle触发器**:触发器是一种特殊的存储过程,会在特定的数据库事件(如INSERT、UPDATE或DELETE)发生时自动执行。`V_InsertEquip.sql`可能包含一个插入触发器的示例,这种触发器在向特定表中插入新数据时被...

    Oracle数据库游标使用大全

    总之,Oracle数据库的游标是PL/SQL编程的关键部分,它们提供了一种结构化的方式来遍历和处理查询结果。无论是隐式游标还是显式游标,都能帮助开发者更有效地操纵数据。通过理解游标的使用和属性,你可以编写出更加...

    关于游标的说明与使用方法

    遍历循环游标可以通过循环结构来实现,主要有以下几种方式: 1. **使用`LOOP`循环**:配合`EXIT WHEN`语句判断是否到达记录集末尾。 ```sql LOOP FETCH cur INTO var1, var2, var3; EXIT WHEN cur%NOTFOUND; -...

    Oracle游标使用.docx

    在这个示例中,我们使用了一个循环来遍历游标`cur_employees`中所有记录,并将每条记录的`empno`和`ename`字段输出。 #### 五、总结 本文详细介绍了Oracle中游标的使用方法,包括隐式游标和显式游标的定义、属性...

    oracle游标介绍[定义].pdf

    在遍历游标时,有两种常见的循环方式: - For循环游标:简化了游标处理,自动打开游标,为每条记录创建临时变量,处理完后自动关闭游标。 - Loop循环游标:需要显式地FETCH记录并检查%NOTFOUND状态,以确定何时结束...

    oracle 游标

    Oracle提供了一种简洁的方式来遍历游标结果,即在FOR循环中使用游标。这种方式更简洁,代码可读性更强。比如: ```sql FOR record IN (SELECT column1, column2 FROM table_name) LOOP -- 处理每一行数据 DBMS_...

    oracle游标

    修改表可以通过以下几种方式实现: 1. **重命名表**:使用`sp_rename`存储过程进行表的重命名。 ```sql EXEC sp_rename 'oldname', 'newname'; ``` 2. **修改列属性**:通过`ALTER COLUMN`命令来改变列的数据...

    ORACLE 游标

    Oracle中的游标主要有以下几种类型: 1. **显式游标**:在PL/SQL中定义并使用的游标,需要手动打开、读取和关闭。 2. **隐式游标**:由PL/SQL自动创建和管理,主要用于处理DML语句(INSERT, UPDATE, DELETE)后的...

    游标分类汇总行转列oracleplsql

    在Oracle PL/SQL中,游标是一种非常重要的机制,用于处理从数据库中检索出来的结果集。通过使用游标,可以逐行地读取数据并进行相应的处理,这在需要对查询结果执行复杂逻辑时特别有用。 #### 2. 创建游标 在PL/SQL...

    oracle异常和游标管理.pptx

    游标有几种类型,包括静态游标(隐式游标)、显式游标以及REF游标。隐式游标是PL/SQL在执行DML语句时自动打开的,而显式游标需要程序员明确地打开、提取和关闭。 游标的一些关键属性包括`%NOTFOUND`(表明无结果行...

    Oracle_plsql讲义:第20章 游标.ppt

    然后,可以使用循环结构(如`LOOP`)来遍历游标中的每一行,并在每次迭代中处理数据。 关闭游标使用`CLOSE`语句,确保在不再需要数据时释放资源: ``` CLOSE cursor_name; ``` 显式游标还有几个重要的属性,如`%IS...

    oracle存储过程、游标、函数

    在Oracle中,游标允许我们遍历查询结果集,一次处理一条记录。游标的使用场景包括循环处理结果集、有条件地更新或删除数据等。 1. **隐式游标**:Oracle在每次SQL语句执行时自动使用隐式游标,无需显式声明。 2. **...

    游标使用方法

    游标主要有以下几种类型: 1. **向前只读**:只能向前移动,一旦过了某一行,就无法返回。 2. **可滚动**:可以在结果集中上下左右自由移动。 3. **可定位**:可以通过绝对位置(例如第5行)或相对位置(例如前移2...

    oracle存储过程_函数_语法_大全_详解

    Oracle提供了几种内置的数组类型,可以直接使用。 **示例:** ```sql CREATE OR REPLACE PROCEDURE test (y OUT myPackage.ArrayType) IS x myPackage.ArrayType; BEGIN x := myPackage.ArrayType(); y := x; ...

    进程达到最大游标数

    当遇到"进程达到最大游标数"的问题时,有几种可能的原因: 1. **代码优化不足**:可能是由于应用程序中的循环结构或事务管理不善,导致大量游标被打开但未及时关闭。 2. **配置不当**:数据库系统默认的最大游标数...

    Oracle通过Job调用存储过程.pdf

    2. 循环遍历游标,查询每个测站的数据,并计算流量增量和累计流量。 3. 在计算流量增量时,需要查询出最有一条计算过流量的记录,并更新当前累计流量。 创建 Oracle 计划任务 在创建 Oracle 计划任务时,需要使用 ...

    Oracle中比对2张表之间数据是否一致的几种方法

    本文将详细介绍几种常用的在Oracle中对比两张表数据一致性的方式。 #### 方法一:利用Oracle 11g中的`dbms_comparison`包 当两张表的数据结构完全相同,并且其中一张表所在数据库版本为Oracle 11g及以上时,可以...

    oracle-cursor.rar_oracle

    在Oracle中,游标有以下几种类型: 1. **隐式游标**:Oracle为每个SQL语句自动提供隐式游标。当你执行一个DML(数据操纵语言)操作,如INSERT、UPDATE或DELETE时,系统会使用隐式游标。你无法直接控制隐式游标,但...

Global site tag (gtag.js) - Google Analytics