oracle 循环分区处理

           今天要到对一个大数据表A,捞取一部分数据进行处理,由于表数据很大且是分区表,表是根据hash 分区的P1到p64,只能循环分区处理,由于根据分区查询,select * from A partition(p),变量p不能为字符串,所有根据select DATA_OBJECT_ID  from user_objects t 

     where object_name = 'A'    and OBJECT_TYPE = 'TABLE PARTITION')。获取DATA_OBJECT_ID,然后 select   *  from A partition(DATAOBJ_TO_PARTITION(A, p.DATA_OBJECT_ID)来处理。

   

           oracle跳出当前循环是用goto,直接跳出使用exit;



declare
  cursor cur_p is(
    select DATA_OBJECT_ID
      from user_objects t
     where object_name = 'A'
       and OBJECT_TYPE = 'TABLE PARTITION');
begin
  for p in cur_p loop
    declare
      cursor cur is(
        select /*+ leading(c) */
         *
          from A partition(DATAOBJ_TO_PARTITION(A, p.DATA_OBJECT_ID));
      v_table   cur%ROWTYPE;
      num       integer;
      v_sqlerrm varchar2(1000);
    begin
    
    end;
  end loop;
end;

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值