问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

请问oracle动态游标和静态游标最大的区别是什么啊,谢谢

发布网友 发布时间:2022-04-26 05:26

我来回答

4个回答

懂视网 时间:2022-05-01 19:18

REF CURSOR; --定义一个动态游标
游标名  游标类型;

如果查询的表的数据不同的,动态变化的,这时候可以用动态游标。

需要注意的是,动态游标的定义,

在普通存储过程中:需要放在 is 后面的第一行。

动态游标通过:open 游标 for 字符串,形式使用,遍历。

create or replace procedure P_TEST_SQL 
is TYPE ref_cursor_type IS REF CURSOR; --定义一个动态游标 tablename varchar2(200) default ‘ess_client‘; v_sql varchar2(1000); mobile varchar2(15); usrs ref_cursor_type; begin --使用连接符拼接成一条完整SQL v_sql := ‘select usrmsisdn from ‘||tablename||‘ where rownum < 11‘; --打开游标 open usrs for v_sql ; loop fetch usrs into mobile; exit when usrs%notfound; insert into tmp(usrmsisdn) values(mobile); end loop; close usrs; commit; end P_TEST_SQL;

下面是一个自己做过的一个实例,代码只保留了可参考部分。

create or replace procedure DDGZ1--订单跟踪
( 
 P_flag varchar,--订单类型
 P_operate varchar,--操作类型
 P_BH varchar --传入的编号ID
)
is
 TYPE ref_cursor_type IS REF CURSOR;
 v_cur_CKD ref_cursor_type;
 
begin
  open v_cur_CKD for ‘select v_ERP,v_DRP,v_jxsmc,v_jxs,v_DWMC,v_czr,v_jlsj from tmp_DDGZ1‘; 
 fetch v_cur_CKD into v_ERP,v_DRP,v_jxsmc,v_jxs,v_DWMC,v_czr,v_jzsj;
 while v_cur_CKD%found
 loop 
 insert into DRPDDGZJL2 (JLID,DRP,ERP,JXS,JXSMC,JLSJ,GZJL,CZR,BHID) values(SYS_GUID(),v_drp,v_erp,v_jxs,v_jxsmc,v_jzsj,v_DWMC||‘受托代销成品库接收订单,组织发货‘,v_CZR,‘出库单‘||P_BH); 
 fetch v_cur_CKD into v_ERP,v_DRP,v_jxsmc,v_jxs,v_DWMC,v_czr,v_jzsj;
 end loop;
 close v_cur_CKD;
 end;

 

而对于包头包体的存储过程。经常是如下形式:

在包头中:

CREATE OR REPLACE PACKAGE BIA_FYJSDCX 

is --发运结算单查询 type T_CURSOR is ref cursor; procedure ERP_HY_FYJSDCX ( Re_CURSOR out T_CURSOR ); end BIA_FYJSDCX;

包体中:

 procedure ERP_HY_FYJSDCX
 (
  Re_CURSOR out T_CURSOR
 )
begin
 v_sql:=‘select * from T_FYJSDCX4‘;
 Open Re_CURSOR For v_sql; 

end;

 

Oracle动态游标实现动态SQL循环遍历,和静态游标的比较。

标签:数据   静态   字符串   strong   保留   遍历   存储   nbsp   into   

热心网友 时间:2022-05-01 16:26

静态游标指的是程序执行的时候不需要再去解析sql语言,对于sql语句的解析在编译的时候就可以完成的。动态游标由于含有参数,对于sql语句的解析必须要等到参数确定的时候才能完成。从这个角度来说,静态游标的效率也比动态游标更高一些。

热心网友 时间:2022-05-01 17:44

静态游标就是自己定义游标名自己用或者用系统给出的名称(sql);
动态游标则是调用别人的游标,B去调用A中定义的游标。。。。

热心网友 时间:2022-05-01 19:19

最接近正确答案的却被点踩。
上边airson79那个屎一样的回答,前半句说的是软解析,后半句说的是绑定变量。oracle静态动态游标的区别就是静态游标时声明之初就已经知道结果的,例如静态SQL执行时的隐式游标,或者使用静态SQL声明的游标。
动态游标指声明时结果集不确定的,一般也就是用于调用其他的游标的,例如用于引用静态游标的sys_refcursor或者使用ref cursor类型的游标(无论之后使用静态还是动态SQL定义)。
除了引用静态游标的sys_refcursor类型的动态游标外,一般的动态游标的定义语法都是:
TYPE 游标类型 IS REF CURSOR; --定义一个动态游标类型
游标名  游标类型; --正式声明一个动态游标
数据库里面静态游标包含哪两种类型?

游标是SQL的一个内存工作区,由系统或用户以变量的形式定义。游标的作用就是用于临时存储从数据库中提取的数据块。Oracle数据库的Cursor类型包含三种: 静态游标:分为显式(explicit)游标和隐式(implicit)游标;REF游标:是一种引用类型,类似于指针。下面我们一一介绍它们的使用。1.隐式游标 1)Select ...

oracle如何让游标的指针置0

在Oracel中,游标可以分为两大类:静态游标 和 REF游标(动态游标)。REF游标是一种引用类型,类似于指针。而静态游标又分为显式游标和隐式游标两种。 结构图如下: |--隐式游标:系统自动定义的游标,用于处理select into 和DML语句。 |---静态游标---| Oracle游标---| |--显式游标:即用户自定义游标,专门用于...

oracle游标和游标变量的区别?

oracle游标是数据库中一个命名的工作区,当游标被声明后,他就与一个固定的SQL想关联,在编译时刻是已知的,是静态的.它永远指向一个相同的查询工作区.游标变量可以在运行时刻与不同的SQL语句关联,在运行时可以取不同的SQL语句.它可以引用不同的工作区.oracle游标和游标变量是不能相互代替的.如何定义游标...

游标详细资料大全

当你在一个文本框或某种程式中输入文字时,总有一个游标来显示你将要输入文字的位置。现在大部分的游标都为一个小竖线,规则的闪动.而在DOS下有些游标则是短短的小横线,同样规则的闪动.现用的windows游标是一个图像,可以是动态的也可以是静态的,在不同情况下样子也不同。基本介绍 中文名 :游标...

光标是什么 关于光标的简介

命令隐式的声明一个光标。2、当你在一个文本框或某种程序中输入文字时,总有一个光标来显示你将要输入文字的位置。大部分的光标都为一个小竖线,规则的闪动.而在DOS下有些光标则是短短的小横线,同样规则的闪动.现用的windows光标是一个图像,可以是动态的也可以是静态的,在不同情况下样子也不同。

java面试必备基础知识篇?

82.客户端游标与服务器端游标的区别? 83.动态游标与静态游标的区别? 84.dotnet由哪几个基本框架组成? 85.Oracle中SGA是什么? 86.webservers是什么? 87.UNIX中QT是什么意思? 88.在软件开发生命周期中的哪个阶段开始测试? 89.dotnet与J2EE的比较? 90.什么是ActiveX? 91.Java中IDL是什么? 92.ISO9000和CMM是什...

光标是什么 关于光标的简介

比如UPDATE、DELETE和INSERT。2. 当您在文本框或程序中输入文本时,总会有一个光标显示您要在哪里输入文本。大多数游标是一条小的垂直线,有规律地闪烁。在DOS中,一些游标是短的水平线,有规律地闪烁。当前的Windows光标是一个图像,可以是动态的,也可以是静态的,在不同的情况下看起来也不同。

数据库中游标的作用是什么?

游标实际上是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。游标可以被看作是一个查询结果集和结果集中指向特定记录的游标位置组成的一个临时文件,提供了在查询结果集中向前或向后浏览数据、处理结果集中数据的能力。有了游标,用户就可以访问结果集中任意一行数据,在将游标放置到某行之后,...

oracle pl/sql中如何使用变量

1.REF CURSOR,定义时同时指定SELECT语句的游标称为显式或者静态游标,在打开时才指定SELECT语句的游标称为动态游标,如:DECLARE TYPE c1 IS REF CURSOR ;emp_cursor c1;v_name employee.name % TYPE;v_sal employee.salary % TYPE;begin open emp_cursor for SELECT name,salary FROM ...

sql 让一个静态的游标变成动态的游标 order by排序问题

定义游标使用:SCROLL 指定所有的提取选项(FIRST、LAST、PRIOR、NEXT、RELATIVE、ABSOLUTE)均可用。如果未在 ISO DECLARE CURSOR 中指定 SCROLL,则 NEXT 是唯一支持的提取选项。

oracle动态游标for循环 oracle动态游标 oracle游标loop循环 oracle游标的使用 oracle for循环游标 oracle动态sql拼接 oracle游标用法 oracle存储过程游标循环 oracle游标循环赋值
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
男人阴毛瘙痒是怎么回事 在上酒桌前怎样准备可以让自己不容易醉? 应酬喝酒时,怎么控制自己不喝多? 应酬喝酒躲不掉,又害怕喝醉难受,咋办? 质子和中子的转化关系是什么? 湖北会计初级什么时候报名 看看明星给孩子起的名字,轻易知道是香港还是内地的 ipad停用知道密码怎么解 ipadair1不知道密码怎么恢复出厂设置 以前开通过支付宝可现在忘记了账号和密码了怎么办 oracle如何? oracle 动态执行表是什么或者说是什么意思? oracle 动态sql是什么意思 oracle动态sql语句执行问题 两台工控机上的WINCC如何通过交换机连接S7-400的plc ORACLE使用动态SQL有哪些好处? wcc和plc200smart如何连接? oracle 动态查询 博途软件中wincc与300PLC如何建立链接? oracle 查询动态表 一个wincc与3个PLC通讯如何连接,其中两台PLC是S7-200,如何完成连接 如何让oracle手动启动 PLC的变量如何与Wincc连接?需要在PLC程序中编程吗? wincc flexible编辑完人机界面后怎么连PLC? PLC与WINCC仿真怎么连接? wincc怎么与plc怎么连接进行控制? 整天坐在办公室里,没时间运动,怎么样才能减去身上的赘肉? 如何建立WinCC与PLC的通信连接cp5611能与PLC通讯,但与WINCC7.4不能通讯_百度问一问 天天坐在办公室,胖了,什么方法减肥效果好,而且没有副作用? 年回报率有6%的商铺怎样?会不会差? 如何在oracle存储过程中执行动态sql语句 如何跟踪Oracle动态服务注册 怎样手动打开Oracle 如何查看oracle参数是静态或者是动态 有没有人知道苹果的后台程序一般维持多久会自动关闭? 苹果后台应用最多运行多长时间会自动关闭? iPhoneQQ在后台运行多久才自动下线? 如何剪辑视频,调整多个视频的播放倍速? 如何调整视频的播放倍速?多个视频批量的那种 如何调整每段视频的播放倍速? 如何调整多段视频的播放倍速? 苹果手机后台运行程序会自动关闭吗 如何将视频的播放倍速调快? 微信在苹果ios系统后台运行,会被自动关闭吗? 学会用这样的方式改装WIFI天线,定会让你的WIFI 信号增强5倍 有什么软件可以把视频倍速调到0.1倍? 路由器天线改装焊接 如图我从图一、图二(也就是路由器原先跳线和天 怎样制作远程wifi天线 请教一下小米WIFI信号放大器怎么加装外置天线,觉得下图中的接法效果 卫星锅怎么改装wifi天线