• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

为含有分区及子分区的模型添加分区。

mysql 搞代码 4年前 (2022-01-09) 29次浏览 已收录 0个评论

无详细内容 无 create or replace procedure p_test_gy(v_datacycle_id varchar2, –添加分区的上限值 v_entity_owner varchar2, v_entity_name varchar2, v_retcode out varchar2, v_retinfo out varchar2) is v_cnt1 number; –实体检测 v_cnt2 number; —

<style> .CodeEntity .code_pieces ul.piece_anchor{width:25px;position:absolute;top:25px;left:-30px;z-index:1000;} .CodeEntity .code_pieces ul.piece_anchor li{width:25px;background: #efe;margin-bottom:2px;} .CodeEntity .code_pieces ul.piece_anchor li{border-left:3px #40AA63 solid;border-right:3px #efe solid;} .CodeEntity .code_pieces ul.piece_anchor li:hover{border-right:3px #40AA63 solid;border-left:3px #efe solid;} .CodeEntity .code_pieces ul.piece_anchor li a{color: #333;padding: 3px 10px;} .CodeEntity .code_pieces .jump_to_code{visibility:hidden;position:relative;} .CodeEntity .code_pieces .code_piece:hover .jump_to_code{visibility:visible;} .CodeEntity .code_pieces .code_piece:hover .jump_to_code a{text-decoration:none;} .CodeEntity .code_pieces h2 i{float:right;font-style:normal;font-weight:normal;} .CodeEntity .code_pieces h2 i a{font-size:9pt;background: #FFFFFF;color:#00A;padding: 2px 5px;text-decoration:none;} </style> <!—ecms -ecms

    –> <!—ecms -ecms

  • $velocityCount
  • –> <!—ecms -ecms

–>

create or replace procedure p_test_gy(v_datacycle_id varchar2, --添加分区的上限值                                      v_entity_owner varchar2,                                      v_entity_name  varchar2,                                      v_retcode      out varchar2,                                      v_retinfo      out varchar2) is  v_cnt1           number; --实体检测  v_cnt2           number; --分区是否存在检测  v_cnt3           number; --模板子分区是否存在检测  v_part_type      varchar2(30); --分区类型  v_subpart_type   varchar2(30); --子分区类型  v_part_value_max varchar2(30); --分区最大值  v_part_style     varchar2(30); --分区命名格式  v_part_value     varchar2(30); --分区值变量  v_sql            varchar2(4000); --动态执行SQL  v_sub_template   varchar2(4000); --调整模板子分区   v_high_value  long; --子分区值变量  v_subpart_value     varchar2(30); --子分区值变量  /*v_pkg  v_procname */begin  /*--插入日志部分  p_insert_log(v_acct_month, v_pkg, v_procname, v_prov_id, sysdate, '');*/  --检测输入参数是否有误  select count(0)    into v_cnt1    from sys.dba_objects   where owner = v_entity_owner     and object_name = v_entity_name     and object_type = 'TABLE';  if v_cnt1 = 0 then    v_retcode := 'FAIL';    v_retinfo := '目标表信息输入有误';  else    --检测目标表有无分区    select count(0)      into v_cnt2      from sys.dba_part_tables t     where t.owner = v_entity_owner       and t.table_name = v_entity_name;    if v_cnt2 = 0 then      v_retcode := 'SUCCESS';      v_retinfo := '目标表无分区';    else      --检测分区是否已存在      select regexp_replace(max(t.partition_name), '[^0-9]', ''),             regexp_replace(max(t.partition_name), '[0-9]', '')        into v_part_value_max, v_part_style        from sys.dba_tab_partitions t       where t.table_owner = v_entity_owner         and t.table_name = v_entity_name;      select partitioning_type, subpartitioning_type        into v_part_type, v_subpart_type        from sys.dba_part_tables t       where t.owner = v_entity_owner         and t.table_name = v_entity_name;         --分区已存在&分区是LIST/HASH分区      if v_part_value_max >= v_datacycle_id OR v_part_type  'RANGE' then        v_retcode := 'SUCCESS';        v_retinfo := '分区已存在';      else        select count(0)          into v_cnt3          from sys.dba_subpartition_templates         where table_name = v_entity_name           and user_name = v_entity_owner;           --无子分区&有子分区且为模板子分区        if v_part_type = 'RANGE' AND           ((v_subpart_type = 'LIST' AND v_cnt3  0) OR           nvl(v_subpart_type, '**') = 'NONE') then          v_part_value := to_char(add_months(to_date(v_part_value_max,                                                     'yyyymm'),                                             1),                                  'yyyymm');          while v_part_value <= v_datacycle_id loop            v_sql := 'alter table ' || v_entity_owner || '.' ||                     v_entity_name || ' add partition ' || v_part_style ||                     v_part_value || '   values less than (''' ||                     to_char(add_months(to_date(v_part_value, 'yyyymm'), 1),                             'yyyymm') || ''') tablespace ';             --日志检索                            /*dbms_output.put_line(v_sql);*/            --需要分配分区(或者建表设置默认表空间)            execute immediate v_sql;            v_part_value := to_char(add_months(to_date(v_part_value,                                                       'yyyymm'),                                               1),                                    'yyyymm');          end loop;          v_retcode := 'SUCCESS';          v_retinfo := '成功';        else          /*--顺序不太好看             select                  rtrim(wmsys.wm_concat(' subpartition ' || substr(subpartition_name,length(partition_name)+2) || ' values ( ''' ||                regexp_replace(substr(subpartition_name, length(partition_name)+2),'[^0-9]','') || ''' ) '),',') into v_sub_template           from sys.dba_tab_subpartitions          where table_owner = v_entity_owner            and partition_name = v_part_value_max            and table_name = v_entity_name;*/            --有子分区且非模板子分区          v_sub_template := 'alter table ' || v_entity_owner || '.' ||                            v_entity_name || 'set subpartition template(';--''' ||regexp_replace(substr(subpartition_name,length(partition_name) + 2),'[^0-9]','') || '''          for t in (select /*+parallel(sub,4)*/*                      from sys.dba_tab_subpartitions sub                     where table_owner = v_entity_owner                       and partition_name = v_part_style || v_part_value_max                       and table_name = v_entity_name                     order by length(regexp_replace(subpartition_name, '[0-9]', '')),subpartition_name) loop          v_high_value:=t.high_value;          v_subpart_value:=substr(v_high_value,1,4000);          /*if v_subpart_value= 'DEFAULT' then             v_subpart_value:='''DEFAULT''';            end if;*/            v_sub_template := v_sub_template ||' subpartition ' ||                           substr(t.subpartition_name,                                  length(t.partition_name) + 2) ||                           ' values ( '||v_subpart_value||' ) ,' ;          end loop;          --日志检索          dbms_output.put_line(rtrim(v_sub_template, ',') || ')');          insert into dm_check_log            select rtrim(v_sub_template, ',') || ')',                   v_datacycle_id,                   sysdate              from dual;          commit;          execute immediate rtrim(v_sub_template, ',') || ')';          v_part_value := to_char(add_months(to_date(v_part_value_max,                                                     'yyyymm'),                                             1),                                  'yyyymm');          while v_part_value <= v_datacycle_id loop            v_sql := 'alter table ' || v_entity_owner || '.' ||                     v_entity_name || ' add partition ' || v_part_style ||                     v_part_value || '   values less than (''' ||                     to_char(add_months(to_date(v_part_value, 'yyyymm'), 1),                             'yyyymm') || ''') tablespace ';            /*dbms_output.put_line(v_sql);*/          execute immediate v_sql;            --需要分配分区(或者建表设置默认表空间)            v_part_value := to_char(add_months(to_date(v_<strong>本文来源gaodai#ma#com搞@@代~&码*网2</strong>part_value,                                                       'yyyymm'),                                               1),                                    'yyyymm');          end loop;          v_retcode := 'SUCCESS';          v_retinfo := '成功';        end if;      end if;    end if;  end if;end;

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:为含有分区及子分区的模型添加分区。
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址