首页
学习
活动
专区
圈层
工具
发布

Oracle的静态游标与动态游标

前言 我们在写Oracle的存储过程里面,经常会用到游标,Oracle里面的游标分为静态游标和动态游标。今天我们在说一下分别有什么不同。...fetch 游标名 into 变量1,变量2,变量3,变量4; 相对来说静态游标在存储过程中用到的会比较多,而动态游标相对较少,像我们如果存在分割表的时候,取数据时就会用到动态游标了。...通过静态游标设置开始和结果日期获取到所涉及到的当前年月。 根据获取到的当前年月生成要查询对应的月份分割表的动态SQL语句。 用动态游标遍历,然后进行数据的处理。 代码 ?...根据输入的日期通过静态游标生成对应的动态SQL语句。...通过动态sql语句使用动态游标遍历销售进行数据的更新。

3.7K30

Oracle游标使用详解

本节对Oracle中的游标进行详细讲解。...本节所举实例来源Oracle中scott用户下的emp表dept表: 一、游标: 1、概念: 游标的本质是一个结果集resultset,主要用来临时存储从数据库中提取出来的数据块。...二、游标的分类: 1、显式游标:由用户定义,需要的操作:定义游标、打开游标、提取数据、关闭游标,主要用于对查询语句的处理。...三、使用游标修改数据的注意事项 1、使用游标修改数据时,为防止他人在自己操作数据时对数据进行修改,oracle提供for update子句进行加锁。...至此,Oracle游标解析完毕,总而言之,游标只是作为我们从数据库中提取出来的一部分数据,我们针对这个结果集做一系列的操作。

4.9K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Oracle中游标Cursor使用实例

    ,fetch和close 1 Oracle在解析和执行目标sql时,始终会先去当前session的pga中寻找是否有匹配的缓存session cursor 2 在当前session的pga中找不到匹配的缓存...,Oracle就去缓存中寻找是否存在匹配的parent cursor,如果找不到, Oracle就会生新生成一个session cursor和一对shared cursor。...表示一条sql语句成功执行后受其影响而改变的记录的数量,代表最近一次执行的sql的sql%rowcount,没有任何记录的值0 2 显式游标 在plsql中,显式的打开,关闭 Cursorname%found...,cursorname%notfound,isopen,rowcount 当游标一次都还没有fetch,%found的值为null,没有数据是false,否则ture 当显式游标还没有打开,%found...里的共享游标 Shared cursor之间的共享,就是重用存储在child cursor中的解析树和执行计划,避免不用从头开始硬解析 常用游标共享,参数cursor_sharing select *

    1.7K10

    【DB笔试面试576】在Oracle中,简述Oracle中的游标。

    ♣ 题目部分 在Oracle中,简述Oracle中的游标。 ♣ 答案部分 在介绍游标之前先介绍一下Oracle数据库中库缓存(Library Cache)的作用及其组成结构。...库缓存对象句柄是Oracle自定义的一种复杂的C语言结构。...Heap 0里的“Tables”实际上记录的就是各个库缓存对象之间的关联关系,Oracle可以通过这些关联关系直接访问到对应的库缓存对象。...例如,Oracle可以通过访问某个库缓存对象的Heap 0中的Child table而依次顺序访问从属于该对象的所有子库缓存对象。...各个Data Heap之间是独立的,没有关联关系,Oracle会在Heap 0的属性“Data Blocks Pointer”中存储指向这些Data Heap的指针,这样Oracle通过访问Heap 0

    2.4K20

    Oracle11g全新讲解之游标

    游标 游标的作用:处理多行数据,类似与java中的集合 1.隐式游标   一般是配合显示游标去使用的,不需要显示声明,打开,关闭,系统自定维护,名称为:sql 常用属性: sql%found:语句影响了一行或者多行时为...true %NOTFOUND:语句没有任何影响的时候为true %ROWCOUNT:语句影响的行数 %ISOPEN:游标是否打开,始终为false 案例: begin update...end ; 2.显示游标   显式游标在PL/SQL块的声明部分定义查询,该查询可以返回多行,处理多行数据 实现步骤: 声明一个游标 打开游标 循环提取数据 关闭游标 案例: a)...: 允许使用游标删除或更新活动集中的行,声明游标时必须使用 select … for update 语句。...: 游标用于处理查询结果集中的数据 游标类型有:隐式游标、显式游标和 REF游标 隐式游标由 PL/SQL 自动定义、打开和关闭 显式游标用于处理返回多行的查询 显式游标可以删除和更新活动集中的行 要处理结果集中所有记录时

    92020

    Oracle数据库学习笔记(七 —— 游标)

    Oracle 数据库游标 一、游标 1.1 游标(显示游标) 1.1.1 使用显示游标 1.1.2 显示游标属性 1.1.3 游标 (参数游标) 1.1.4 游标 (游标 for 循环) 1.1.5 游标...(游标变量) 1.1.6 游标 (隐含游标) 1.2 总结 一、游标 SQL语言是面向集合的,是对指定列的操作。...当在PL/SQL块中执行查询语句(SELECT)和数据操纵语句(DML)时,Oracle会为其分配一个上下文区(Context Area) 游标是指向上下文区的指针,它为应用提供了一种对具有多行数据查询结果集中的每一行数据分别进行单独处理的方法...(游标 for 循环) 游标for循环简化游标处理 使用游标for循环时,oracle隐含打开游标,提取数据并关闭游标。...Oracle隐式地打开、提取,并总是自动地关闭SQL游标 隐式游标属性包括 SQL%FOUND、 SQL%NOTFOUND SQL%ROWCOUNT SQL%ISOPEN declare v_empno

    1.6K10

    【DB笔试面试578】在Oracle中,什么是会话游标?会话游标和共享游标的区别有哪些?会话游标分为哪几类?

    联系1.会话游标是以哈希表的方式缓存在PGA中,意味着Oracle会通过相关的哈希运算来存储和访问在当前会话的PGA中的对应会话游标。...这种访问机制和共享游标是一样的,可以简单地认为Oracle是根据目标SQL的SQL文本的哈希值去PGA中的相应Hash Bucket中找匹配的会话游标。...由于在缓存会话游标的哈希表的对应Hash Bucket中,Oracle会存储目标SQL对应的父游标的库缓存对象句柄地址,所以,Oracle可以通过会话游标找到对应的父游标,进而就可以找到对应子游标中目标...在上表中需要注意的是,动态游标是Oracle数据库中最灵活的一种会话游标,它的灵活性表现在:①动态游标的定义方式非常灵活,它可以有多种定义方式。②动态游标可以作为存储过程的输入参数和函数的输出参数。...① 在Oracle 11gR2中,一个会话游标能够被缓存在PGA中的必要条件是该会话游标所对应的SQL解析和执行的次数要超过3次。

    2.3K30

    c# 调用Oracle带有游标的存储过程

    前言 我们在写Oracle存储过程时经常会需要返回数据,像这种方式一般都输出游标的方式。我们今天就来做个用C#程序调用Oracle带有游标输出的存储过程并展示出数据。...存储过程 我们先在我们的Oracle数据库里编写一个简单的存储过程,名称为sTest,有一个输入参数ps_SaleNo,三个输出参数分别是pi_Result,ps_Message,pc_cursor 如下图...---- 其中CCurType类型就是我们定义的输出游标变量 ? ---- 上面蓝框的语句就是输出的游标的数据集,我们把这一句单独摘出来查询一下,可以看到返回的结果,如下图: ?...1.引用Oracle.ManagedDataAccess 要调用带游标的存储过程,我们必须要引用Oracle.ManagedDataAccess,有两个原因: 不需要安装OracleClient的客户端...原来自带的OracleClient的参数类型里面没有RefCursor类型,无法实现调用返回游标的存储过程 我们在程序的引用处右键选择管理NuGet的程序包。

    2.8K10

    什么是Oracle的高版本游标(High Version Count)?如何排查?

    简介 一个父游标下对应的子游标个数被称为Version Count,每个子游标对应一个执行计划。对于一个特定的游标有多少个版本(Version Count)就属于高版本游标是没有明确定义的。...在Oracle 11g中,V$SQL_SHARED_CURSOR可以用来诊断子游标不共享问题的原因。...SLAVE_QC_MISMATCH 现有的子游标是一个工作游标,而新的游标是由协调者发出的(或者,现有的子游标是由协调者发出的,而新的是一个工作游标)。...ROLL_INVALID_MISMATCH: 超过了滚动无效窗口。这是由DBMS_STATS的滚动无效功能引起的。因为它的无效窗口已经超过了,所以子游标不能被共享。...对于版本过多的SQL,一次软解析甚至不如重新执行一次硬解析来的高效,所以Oracle引入了一系列的控制手段来处理这些特殊的游标。

    1.3K10

    《深度洞察:MySQL与Oracle中游标的性能分野》

    内存管理与游标性能在内存管理方面,MySQL和Oracle有着不同的策略,这对游标性能产生了深远影响。Oracle采用了较为复杂和成熟的内存管理机制,它将数据缓存区和程序全局区等进行了细致划分。...它的缓存机制在处理游标操作时,可能无法像Oracle那样高效地利用内存。...Oracle的查询优化器能够智能地选择合适的索引,减少数据扫描的范围,从而提高游标操作的效率。...在Oracle中,事务的管理非常严格和完善。当游标在事务中执行时,Oracle能够确保数据的原子性、一致性、隔离性和持久性。...如果游标操作出现错误,Oracle可以根据事务的定义进行回滚操作,保证数据的完整性。

    35200
    领券