`

游标——Ref Cursor 用法

 
阅读更多

REF CURSOR Overview

1,什么是 REF游标 ?
动态关联结果集的临时对象。即在运行的时候动态决定执行查询。

2,REF 游标 有什么作用?
实现在程序间传递结果集的功能,利用REF CURSOR也可以实现BULK SQL,从而提高SQL性能。


3,静态游标和REF 游标的区别是什么?
①静态游标是静态定义,REF 游标是动态关联;
②使用REF 游标需REF 游标变量。
③REF 游标能做为参数进行传递,而静态游标是不可能的。

4,什么是REF 游标变量?
REF游标变量是一种 引用 REF游标类型 的变量,指向动态关联的结果集。


5,怎么使用 REF游标 ?
①声明REF 游标类型,确定REF 游标类型;
⑴强类型REF游标:指定retrun type,REF 游标变量的类型必须和return type一致。
语法:Type REF游标名 IS Ref Cursor Return 结果集返回记录类型;
⑵弱类型REF游标:不指定return type,能和任何类型的CURSOR变量匹配,用于获取任何结果集。
语法:Type REF游标名 IS Ref Cursor;

②声明Ref 游标类型变量;
语法:变量名 已声明Ref 游标类型;

③打开REF游标,关联结果集 ;
语法:Open Ref 游标类型变量 For 查询语句返回结果集;

④获取记录,操作记录;
语法:Fatch REF游标名 InTo 临时记录类型变量或属性类型变量列表;

⑤关闭游标,完全释放资源;
语法:Close REF游标名;

 

例子:强类型REF游标
Declare
Type MyRefCurA IS REF CURSOR RETURN emp%RowType;
Type MyRefCurB IS REF CURSOR RETURN emp.ename%Type;
vRefCurA MyRefCurA;
vRefCurB MyRefCurB;
vTempA vRefCurA%RowType;
vTempB vRefCurB.ename%Type;

Begin
Open vRefCurA For Select * from emp Where SAL > 2000;
Loop
Fatch vRefCurA InTo vTempA;
Exit When vRefCurA%NotFound;
DBMS_OUTPUT.PUT_LINE(vRefCurA%RowCount||' '|| vTempA.eno||' '||vTempA.ename ||' '||vTempA.sal)
End Loop;
Close vRefCurA;

 

例子:弱类型REF游标

Declare
Type MyRefCur IS Ref Cursor;
vRefCur MyRefCur;
vtemp vRefCur%RowType;
Begin
Case(&n)
When 1 Then Open vRefCur For Select * from emp;
When 2 Then Open vRefCur For Select * from dept;
Else
Open vRefCur For Select eno, ename from emp Where JOB = 'CLERK';
End Case;
Close vRefCur;
End;

分享到:
评论

相关推荐

    Latch Free、Library cache伪游标(pseudo cursor)之间的那些事

    另外,伪游标(pseudo cursor)是Oracle数据库中用于描述SQL语句的内部数据结构,它记录了SQL语句的执行计划和其他信息。 在处理LatchFree问题和Library cache争用时,首先要明确的是,这些争用问题通常会导致CPU...

    静态、动态sql及各种游标

    静态、动态SQL及各种游标 静态SQL和动态SQL是两种不同的SQL语句执行方式,分别应用于不同...游标(Cursor)则是用于存储和操作数据库中的数据的一种数据库对象,分为隐式游标、显式游标和Ref Cursor(动态游标)三种。

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

    ### 关于游标的说明与使用方法 #### 一、什么是游标? 在数据库技术中,**游标**是一种用于检索查询结果集中的数据的方式。它允许用户逐行处理记录集,而不是一次处理整个记录集。这使得游标成为处理大量数据时的...

    详细解释游标的原理和使用方法(有代码)

    ### 游标的原理和使用方法详解 #### 一、引言 在数据库开发过程中,当需要从查询结果集中逐条处理记录时,游标成为了一种非常有效的解决方案。本文将详细探讨游标的原理及使用方法,并通过具体示例加深理解。 ####...

    快速掌握Oracle数据库游标的使用方法

    Oracle 数据库游标的使用方法 Oracle 数据库游标是指在查询返回结果超过一行时,需要使用的显式游标。用户不能使用 select into 语句,而是需要使用游标来处理多行查询结果。在 PL/SQL 中,隐式游标会在查询开始时...

    sql游标 cursor

    ### SQL 游标 (Cursor) 的基本用法 在数据库操作中,游标(Cursor)是一种重要的机制,它允许用户逐行处理查询结果集中的数据。与直接执行SQL语句并返回所有匹配行不同,游标可以让我们更灵活地控制数据的检索方式...

    oracle如何合并多个sys_refcursor详解

    总之,合并`sys_refcursor`涉及到对Oracle的高级特性的理解,包括游标处理、XML序列化和解析以及`DBMS_LOB`包的使用。熟练掌握这些技能,可以在处理复杂的数据处理需求时提高效率,同时保持代码的简洁性。

    数据库实验 游标及游标并发

    在数据库实验中,我们使用了两种方法来更新教师工资:使用游标和正常的更新方式。在使用游标时,我们可以逐行处理记录,从而实现复杂的业务逻辑。在正常的更新方式中,我们可以使用多个UPDATE语句来实现更新操作。...

    Oracle游标使用详解

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

    Oracle游标的使用

    要使过程返回数据集,关键在于使用`OUT`类型的参数,并且该参数应为`sys_refCursor`系统引用游标类型。这样,过程可以在PL/SQL程序中将数据集作为输出传递给调用者。例如,在提供的示例中,`add_sal`过程接受一个...

    利用游标执行删除查询统计 cursor

    利用游标执行删除查询统计 cursor, 执行动态sql

    CURSOR 游标的使用

    游标的使用 有些像文件的使用,需要定义声明,打开关闭,操作等等。 前面都要加EXEC SQL,表示执行SQL语句。 (1)说明游标(声明——DECLARE) EXEC SQL DECLARE CURSOR FOR ; 只是说明,并没有执行其中的SELECT语...

    oracle内部培训资料——游标

    ### Oracle内部培训资料——游标知识点详解 #### 一、游标概述 游标是Oracle数据库中用于处理SQL查询返回的多行记录...以上就是关于Oracle显式游标的详细介绍及其使用方法,希望能帮助大家更好地理解和使用显式游标。

    SQL游标原理和使用方法

    SQL游标是数据库管理系统中一个重要的概念,它允许程序员按需逐行处理查询结果,而不仅仅是一次性获取所有数据。在数据库编程中,特别是在处理...了解游标的工作原理和使用方法,对于任何数据库开发者都是十分必要的。

    游标及存储过程 cursor_proc

    游标及存储过程 通过判断微信号是否存在执行不同的操作

    proc 游标讲述

    在PL/SQL中,游标主要分为三种类型:静态游标、显式游标和隐式游标,还有特殊类型的REF游标。 **静态游标**一般在编译时确定其查询,一旦创建,就不能改变。由于它们不支持动态SQL,所以在需要灵活处理不同查询结果...

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

    1. 静态游标:静态游标是使用 cursor...is 语句定义的游标,它可以对查询语句(select)返回的多条记录进行处理。 2. 动态游标:动态游标是在运行期间传递参数来获取数据结果集。 三、游标的声明方式 游标的声明...

    SQL经典游标使用方法

    游标对于初学者来说可能有些抽象,但一旦掌握了其基本使用方法,就能在很多场景下发挥巨大的作用。下面我们将详细探讨SQL经典游标的应用。 首先,我们需要理解游标的基本概念。游标创建了一个指向结果集中特定位置...

    SQL游标原理和使用方法.doc

    ### SQL游标原理和使用方法 #### 一、引言 在数据库开发中,当我们需要检索数据时,通常会使用`SELECT`语句。但在某些情况下,我们需要从查询结果集中逐条读取记录,这时就需要用到游标。本文将详细介绍SQL游标的...

Global site tag (gtag.js) - Google Analytics