`
I_am_kevin
  • 浏览: 145297 次
  • 性别: Icon_minigender_1
  • 来自: 河南
社区版块
存档分类
最新评论

Oracle游标学习二

阅读更多

 

 

1. -- 定义游标是,可以返回多个列:使用变量处理
DECLARE
CURSOR CUR_EMP IS SELECT P.EMPNO,P.ENAME FROM SCOTT.EMP P; ----声明显示游标
T_EMPNO SCOTT.EMP.EMPNO%TYPE;
T_ENAME SCOTT.EMP.ENAME%TYPE;
BEGIN
OPEN CUR_EMP;
  LOOP
  FETCH CUR_EMP INTO T_EMPNO,T_ENAME;  -- 注意Fetch可以依次将多列数据放入到变量中
  EXIT WHEN CUR_EMP%NOTFOUND ;
  DBMS_OUTPUT.put_line(T_EMPNO);
  DBMS_OUTPUT.put_line(T_ENAME);
  END LOOP;
CLOSE CUR_EMP;
END;

2.-- 定义游标是,可以返回多个列 : 使用RowType进行处理
DECLARE
CURSOR CUR_EMP IS SELECT * FROM SCOTT.EMP P;  -->必须返回整个表中的所有 列方可与T_EMP 匹配
T_EMP SCOTT.EMP%ROWTYPE;
BEGIN
OPEN CUR_EMP;
  LOOP
  FETCH CUR_EMP INTO T_EMP;  -- 注意Fetch可以依次将多列数据放入到变量中
  EXIT WHEN CUR_EMP%NOTFOUND ;
  DBMS_OUTPUT.put_line(T_EMP.EMPNO);
  DBMS_OUTPUT.put_line(T_EMP.ENAME);
  END LOOP;
CLOSE CUR_EMP;
END;


3.-- 定义含有参数的游标(参数类型和存储过程一样,不能指定大小)
DECLARE
CURSOR CUR_EMP(T_NO VARCHAR2) IS SELECT P.EMPNO,P.ENAME FROM SCOTT.EMP P WHERE

-- 注释:参数的类型还可以为scott.emp.empno%type也是可以的

P.EMPNO = T_NO;
T_EMPNO SCOTT.EMP.EMPNO%TYPE;
T_ENAME SCOTT.EMP.ENAME%TYPE;
BEGIN
OPEN CUR_EMP('7369'); -- 传入参数到游标中
  LOOP
  FETCH CUR_EMP INTO T_EMPNO,T_ENAME; 
  EXIT WHEN CUR_EMP%NOTFOUND ;
  DBMS_OUTPUT.put_line(T_EMPNO);
  DBMS_OUTPUT.put_line(T_ENAME);
  END LOOP;
CLOSE CUR_EMP;
END;


4.-- 定义动态游标
DECLARE
TYPE CUR_REF IS REF CURSOR ; -- A 声明REF游标类型
CUR_EMP CUR_REF; -- B 声明REF游标类型的变量
T_EMP SCOTT.EMP%ROWTYPE;
T_SQL VARCHAR2(4000);
BEGIN
T_SQL:='';
T_SQL := T_SQL || 'SELECT * FROM SCOTT.EMP '; -- C 拼接sql语句(可拼接表名、条件、列名等)
OPEN CUR_EMP FOR T_SQL; -- D 动态执行sql

--注意:for后也可以直接跟sql: open cur_emp form select * from emp ;
  LOOP
  FETCH CUR_EMP INTO T_EMP;  -- 注意Fetch可以依次将多列数据放入到变量中
  EXIT WHEN CUR_EMP%NOTFOUND ;
  DBMS_OUTPUT.put_line(T_EMP.EMPNO);
  DBMS_OUTPUT.put_line(T_EMP.ENAME);
  END LOOP;
CLOSE CUR_EMP;
END;

 

 

 

 

 -----------------------------------------------------------------------------------------------------------------------

 

 

 

1.-- PL/SQL还提供了一种简单类型的循环,可以自动控制游标的打开、推进和关闭,叫做游标的FOR循环。
DECLARE
CURSOR CUR_EMP IS SELECT P.EMPNO,P.ENAME FROM SCOTT.EMP P;
BEGIN
----开始游标FOR循环,隐含地打开c_salary游标。
FOR T_EMPS IN CUR_EMP  -- 自动定义变量T_EMPS ,自动选择使用合适的类型。来存储游标返回值
  LOOP
    ----一个隐含的fetch语句在这里被执行
    DBMS_OUTPUT.put_line(T_EMPS.EMPNO);
    DBMS_OUTPUT.put_line(T_EMPS.ENAME);
    --在循环继续前,一个隐含的c_auths%notfound被检测。  
  END LOOP;
   --现在循环已经结束,c_auths游标的一个隐含的close操作被执行。
END;

 

 

2.--CURRENT OF C_EMP_CURSOR :如何通过游标来修改数据
DECLARE
  --通过游标修改数据要上行级锁
  CURSOR C_EMP_CURSOR IS
    SELECT * FROM EMP2 WHERE DEPTNO = 30 FOR UPDATE;
BEGIN
  FOR V_ROW IN C_EMP_CURSOR LOOP
  --  DELETE FROM EMP2 WHERE CURRENT OF C_EMP_CURSOR;
    -- WHERE CURRENT OF 游标,作为条件,用在删除、修改、查询(赋值)中;
  END LOOP;
  COMMIT;
END;
SELECT * FROM EMP;

 

分享到:
评论

相关推荐

    oracle游标学习资料

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

    Oracle 游标使用大全.pdf

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

    Oracle游标使用案例大全

    本资源“Oracle游标使用案例大全”提供了一系列实用的示例,旨在帮助学习者深入理解和掌握Oracle游标的用法。 1. **游标的基本概念** - 游标(Cursor):它是一个数据库系统中的结构,用于存储执行SQL查询后的结果...

    ORACLE游标学习

    【Oracle游标学习】 在Oracle数据库中,游标(Cursor)是一种重要的编程工具,它允许开发者按需处理查询结果集的每一行数据。游标在PL/SQL编程中扮演着关键角色,尤其在处理大量数据时,能提供更加灵活和高效的数据...

    ORACLE 游标学习笔记

    Oracle 游标是数据库编程中的重要概念,尤其在PL/SQL中,它们...以上就是关于Oracle游标的基本知识,包括隐式游标和显式游标的使用、属性以及在处理数据时的注意事项。理解并熟练运用游标是开发高效PL/SQL程序的关键。

    Oracle的游标学习

    Oracle的游标是数据库开发中的一个重要概念,尤其在PL/SQL编程中,游标用于处理SQL查询结果集,使得我们能够逐行处理数据,而不仅仅局限于一次性获取所有数据。在这个主题中,我们将深入探讨游标的定义、类型、使用...

    Oracle 游标使用大全

    Oracle游标是数据库管理系统中的一种数据处理机制,它允许用户按需逐行处理查询结果,而不是一次性加载所有数据。在Java编程中,我们通常通过JDBC(Java Database Connectivity)来与Oracle数据库交互,其中游标扮演...

    oracle游标使用大全1.txt

    通过这些知识点的学习,读者可以更好地理解和应用Oracle游标,提高开发效率和代码质量。此外,还探讨了游标属性的应用场景以及如何通过循环来遍历游标,这对于处理大量数据尤其有用。总之,熟练掌握Oracle游标的使用...

    Oracle游标使用大全

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

    ORACLE游标与异常处理

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

    Oracle 游标的学习

    这个是我自学总结出来的,希望对你有帮助,适合初学者

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

    在学习和实践中,可以参考提供的“游标”压缩包文件,其中包含更具体的示例和帮助文档,以加深对游标的理解。这些实例将帮助新手快速上手,掌握在实际项目中运用游标的技巧。 总之,无论是Oracle还是SQL,游标都是...

    oracle游标案例

    Oracle游标是数据库管理系统中的一种重要机制,它允许我们在处理大量数据时逐行进行操作,而不是一次性加载所有...通过理解这些知识点,你可以更好地利用"游标.sql"文件中的案例,学习和应用Oracle游标来解决实际问题。

    oracle游标的使用

    Oracle游标是数据库管理系统中非常重要的一个概念,它在处理大量数据时提供了高效且灵活的控制方式。在Oracle中,游标(Cursor)允许我们逐行处理查询结果集,而不是一次性加载所有数据,这对于处理复杂的数据操作...

    Oracle游标实例.txt

    描述重复了标题内容,这表明文件的主要目的是提供关于Oracle游标的实例代码,供学习和参考。 ### 标签 标签“Oracle游标”进一步强调了文章的重点,即Oracle数据库中的游标功能。这有助于读者快速识别文章主题,...

    oracle数据库的游标

    游标是Oracle数据库中一个重要的概念,它是一种在内存中用于存储SQL查询结果的临时工作...随着Oracle数据库的不断更新和发展,对于初学者和数据库管理员来说,学习和使用游标是数据库管理和编程中必不可少的技能之一。

    oracle游标和异常处理

    通过本文的学习,我们可以了解到Oracle游标和异常处理的基本概念及使用方法。无论是显式游标还是隐式游标,都能有效地帮助我们处理和管理从数据库中获取的数据。同时,合理的异常处理机制能够增强程序的健壮性和可用...

    Oracle 游标使用大

    本文旨在为初学者提供关于Oracle游标使用的全面指南。 #### 二、基本概念 **1. 显式游标** - **定义**:显式游标是指在PL/SQL块中明确声明并由用户管理的游标。 - **用途**:适用于需要处理多行数据的情况,特别...

    Oracle数据库的游标学习总结

    ### Oracle数据库的游标学习总结 #### 一、引言 在Oracle数据库中,游标是一种重要的机制,用于处理查询结果集。通过游标,我们可以逐行地读取查询结果,这对于复杂的业务逻辑处理非常有用。本文将详细介绍Oracle...

Global site tag (gtag.js) - Google Analytics