温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Oracle的静态游标与动态游标区别是什么

发布时间:2021-07-16 00:40:26 来源:亿速云 阅读:1137 作者:chen 栏目:大数据

本篇内容介绍了“Oracle的静态游标与动态游标区别是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

前言

我们在写Oracle的存储过程里面,经常会用到游标,Oracle里面的游标分为静态游标和动态游标。今天我们在说一下分别有什么不同。

静态游标和动态游标的概念

静态游标

显式游标和隐式游标称为静态游标,因为在使用他们之前,游标的定义已经完成,不能再更改。

定义:

Cursor 游标名(参数1,参数2......) is  查询语句

调用时:

for 变量行 in 游标名 loop

end loop;

动态游标

游标在声明时没有设定,在打开时可以对其进行修改。

定义:

TYPE 游标别名 IS REF CURSOR;

游标名 游标别名;

调用时:

open 游标名 for 动态SQL语句;

loop

    exit when 游标名%NOTFOUND;

    fetch 游标名

      into 变量1,变量2,变量3,变量4;

相对来说静态游标在存储过程中用到的会比较多,而动态游标相对较少,像我们如果存在分割表的时候,取数据时就会用到动态游标了。

代码演示

使用背景

我们在存储过程中输入开始和结束日期,用于查询开始到结束日期这一段时间内的销售。

解决思路

这个查询我们就可以用到静态游标和动态游标的结合使用。

  1. 通过静态游标设置开始和结果日期获取到所涉及到的当前年月。

  2. 根据获取到的当前年月生成要查询对应的月份分割表的动态SQL语句。

  3. 用动态游标遍历,然后进行数据的处理。

代码

Oracle的静态游标与动态游标区别是什么

上面是定义和静态游标和动态游标,下面的静态游标的写法,是根据输入的开始和结束日期获取对应的当前年月

即如果输入了2018-06-01----2018-08-30

游标显示结果为

201806

201807

201808


Oracle的静态游标与动态游标区别是什么

根据输入的日期通过静态游标生成对应的动态SQL语句。vs_sSql是我们的动态字符串,把主表查询先加进来,然后根据输入的开始和结束日期找到对应的月份分割表,然后判断表是否存在,如果存在的话就用union all把分割表加入到动态SQL语句里


Oracle的静态游标与动态游标区别是什么

通过动态sql语句使用动态游标遍历销售进行数据的更新。

“Oracle的静态游标与动态游标区别是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI