我的编程空间,编程开发者的网络收藏夹
学习永远不晚

oracle 游标批量处理数据

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

oracle 游标批量处理数据

declare

  --开始时间

  v_date_start date:= to_date('2015-05-28 00:00:00', 'yyyy-mm-dd hh34:mi:ss');

  --结束时间

  v_date_end   date:= to_date('2015-11-01 00:00:00', 'yyyy-mm-dd hh34:mi:ss');

  --临时变量

  v_date_plus date;

  type type_policy_no is table of ply_base_info.policy_no%type;

  v_policy_no type_policy_no;

  

  type type_compensation_max_amount is table of ply_duty.compensation_max_amount%type;

  v_compensation_max_amount type_compensation_max_amount;

  

  type type_id_ply_duty is table of ply_duty.id_ply_duty%type;

  v_id_ply_duty type_id_ply_duty;

  

  type type_insurance_end_date is table of ply_base_info.insurance_end_date%type;

  v_insurance_end_date type_insurance_end_date;

  

  cursor plyNumberCur is  

   select 

           pbi.policy_no, 

           pd.compensation_max_amount,

           pd.cover_spouse,

           pdn.noclaim_rate,

           pdn.noclaim_amount,

           pd.id_ply_duty,

           trunc(pbi.insurance_end_date)

      from ply_base_info    pbi,

           marketproduct_info mi,

           ply_risk_group   prg,

           ply_plan         pp,

           ply_duty         pd,

           ply_duty_noclaim pdn

     where   pbi.created_date >=v_date_start

         and pbi.created_date < v_date_plus

         and pbi.policy_no is not null

         and pbi.product_code= mi.marketproduct_code

         and pbi.product_version=mi.version

         and mi.product_class in ('02','03')

         and pbi.id_ply_base_info = prg.id_ply_base_info

         and prg.id_ply_risk_group = pp.id_ply_risk_group

         and pp.id_ply_plan = pd.id_ply_plan                    

         and pd.id_ply_duty = pdn.id_ply_duty(+); 

    v_cnt number;--用来统计是否有数据

begin

 loop 

   v_date_plus:=v_date_start+1;--时间变化,查询游标时,每天查询一次

     open plyNumberCur;--打开游标

  loop

   --每1000条记录取一次,最后一次不够1000的也将取出,放到变量中

   fetch plyNumberCur bulk collect into  

    v_policy_no,v_compensation_max_amount,v_id_ply_duty,v_insurance_end_date limit 1000 ;

    for i in 1..v_policy_no.count loop

    if  v_compensation_max_amount(i) > 0 then

      select count (pda.id_ply_duty) into v_cnt  from  ply_duty_attribute pda where pda.id_ply_duty = v_id_ply_duty(i) and pda.duty_attr_code='6';

      if v_cnt>0 then

         update  ply_duty_attribute pda set pda.duty_attr_amount_value=to_char(v_compensation_max_amount(i)), pda.UPDATED_BY='lxg' where pda.id_ply_duty = v_id_ply_duty(i) and pda.duty_attr_code='6' and pda.UPDATED_BY<>'lxg';

      else

        insert into ply_duty_attribute(ID_PLY_DUTY_ATTRIBUTE,ID_PLY_DUTY,DUTY_ATTR_CODE,DUTY_ATTR_AMOUNT_VALUE ,POLICY_NO,  CREATED_DATE,CREATED_BY,UPDATED_DATE,UPDATED_BY,ARCHIVE_DATE)

         values(sys_guid(),v_id_ply_duty(i),'6',to_char(v_compensation_max_amount(i)),v_policy_no(i),sysdate,'lxg',sysdate,'lxg',v_insurance_end_date(i));

      end if;

    end if;   

   end loop;--for end;

   commit;

  --当游标中没有数据将退出

  exit when plyNumberCur%notfound;

 end loop; --for end;

    close plyNumberCur;

  v_date_start:= v_date_start+1;

  if v_date_start>= v_date_end then

     exit;

  end if;

 end loop; --loop

end;

/


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

oracle 游标批量处理数据

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

oracle游标数据量过大如何处理

当游标的数据量过大时,可以考虑以下几种处理方式:1. 分批处理:将大数据集划分为多个较小的数据集进行处理。通过设置合理的分批大小,在每次处理完一个批次后,释放已处理的数据,然后处理下一个批次的数据。这样可以避免一次性加载大量数据到内存中,减
2023-09-27

SqlServer 利用游标批量更新数据

SqlServer 利用游标批量更新数据Intro游标在有时候会很有用,在更新一部分不多的数据时,可以很方便的更新数据,不需要再写一个小工具来做了,直接写 SQL 就可以了Sample下面来看一个实际示例:-- 声明字段变量DECLARE @RegionCod
SqlServer 利用游标批量更新数据
2022-03-17

Mybatis集成MySQL使用游标查询处理大批量数据方式

MyBatis集成MySQL游标查询,通过将结果集保留在数据库中,减少网络开销,延迟结果集处理和处理大数据集。优点包括减少网络消耗、分批处理和轻量化资源消耗。缺点包括潜在锁定、资源占用和复杂性。使用步骤涉及建立、打开、获取和关闭游标。MyBatis集成需要创建游标、配置连接和使用SqlSession创建游标。示例代码演示了如何使用游标查询。注意事项强调及时关闭游标、性能优化和使用批处理模式。
Mybatis集成MySQL使用游标查询处理大批量数据方式
2024-04-02

oracle游标数据量过大如何解决

当游标的数据量过大时,可以考虑以下几种解决方案:使用分页查询:将大的查询结果分成多个小的查询结果集,每次只查询部分数据,然后再进行处理。可以使用ROWNUM或FETCH FIRST语句来实现分页查询。使用LIMIT和OFFSET:在一些数据
oracle游标数据量过大如何解决
2024-02-29

Python使用openpyxl批量处理数据

前言,因为经常使用Excel处理数据,像表格内的筛选,表格间数据的复制,都是简单重复的操作,十分枯燥无聊,为了提高效率,主要是自己懒,特地研究openpyxl,发现能够简化个人劳动量,自己也是小白,特意写一篇文章,共同探讨。 安装op
2022-06-02

如何使用PL/SQL处理批量数据

在PL/SQL中处理批量数据通常使用游标和循环来实现。以下是一个简单的示例:使用游标来访问需要处理的数据集合:DECLARECURSOR data_cursor ISSELECT column1, column2FROM table_nam
如何使用PL/SQL处理批量数据
2024-05-07

oracle如何批量更新数据

在Oracle中,可以使用UPDATE语句来批量更新数据。以下是一个示例:UPDATE your_tableSET column1 = 'new_value1',column2 = 'new_value2&
oracle如何批量更新数据
2024-04-22

oracle怎么批量导入大量数据

Oracle数据库可以通过多种方式批量导入大量数据,以下是一些常用的方法:SQLLoader工具:SQLLoader是Oracle提供的一个用于高效加载大量数据的工具,可以通过控制文件定义数据的格式和加载规则,然后使用SQL*Loader命
oracle怎么批量导入大量数据
2024-04-16

如何在Oracle数据库中实现动态SQL和游标处理

在Oracle数据库中,可以通过使用PL/SQL来实现动态SQL和游标处理。以下是一个简单的示例代码,演示了如何使用动态SQL和游标处理:DECLAREsql_stmt VARCHAR2(200);emp_id employees.emp
如何在Oracle数据库中实现动态SQL和游标处理
2024-03-02

批处理如何实现一键批量备份网站数据

这篇文章将为大家详细讲解有关批处理如何实现一键批量备份网站数据,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。把以下代码另存为AutoBAK.BAT文件放到你要打包的目录下双击执行即可!非常适合虚拟主机商批
2023-06-08

Atlas如何处理实时数据流和批量处理任务

Atlas提供了实时数据流处理和批量处理任务的功能。对于实时数据流处理,Atlas可以使用Apache Kafka等流处理引擎来接收和处理实时数据流。用户可以通过配置数据流连接和数据流转换来处理实时数据,并将处理结果存储到数据库或数据仓库中
Atlas如何处理实时数据流和批量处理任务
2024-03-11

Oracle变量与游标参数的交互

在Oracle中,变量和游标是两个重要的概念,它们在存储过程、函数和触发器等PL/SQL代码中经常一起使用。变量用于存储数据,而游标用于处理查询结果集。当我们需要在这些代码中使用变量和游标时,可以通过参数传递它们的值。以下是一个简单的示例
Oracle变量与游标参数的交互
2024-08-27

变量在Oracle批处理中的应用

在Oracle批处理中,变量可以用来存储临时数据或者传递参数。通过使用变量,可以简化SQL语句的编写,并且提高代码的可维护性和重用性。在Oracle中,可以通过DECLARE语句来声明变量,然后通过SELECT INTO语句将查询结果存储
变量在Oracle批处理中的应用
2024-08-24

编程热搜

目录