新增一维二维表分区

create or replace procedure SP_IE_CRE_PARTITION(IV_CJRQ in varchar2,
                                                                              IV_BSJGH in varchar2,
                                                                              IV_TYPE in varchar2)
/******************************
@AUTHOR:
@CREATE-DATE:
@DESCRIPTION:创建表分区
@MODIFICATION HISTORY:
*******************************/                                                                             
is
V_CJRQ varchar2(8); --报送日期
V_BSJGH varchar2(30);--报送机构号
V_TYPE    varchar2(2);--1: 添加新的复合分区  2:添加子分区
V_PAT_SQL varchar2(4000);-- 添加复合分区的sql
V_SUB_PAT_SQL varchar2(4000);-- 添加子分区的sql
--定义游标
cursor  cur1 is select distinct a.i_full_table_name as sql_ from m_standard_table  a where a.category_id='94B261EE68D9C154E050007F010067B8' ;--and a.i_full_table_name like '%BJ%';
begin
  V_CJRQ := IV_CJRQ;
  V_BSJGH := IV_BSJGH;
  V_TYPE := IV_TYPE;
if V_TYPE = '1' then
for tmp1 in cur1 loop
            V_PAT_SQL :=  'alter table '||tmp1.sql_||'_ERR add partition P'||V_CJRQ||' values less than ('''||to_char(trunc(to_date(V_CJRQ,'yyyyMMdd')+1),'yyyyMMdd')||''')' ;
--dbms_output.put_line('V_PAT_SQL:'||V_PAT_SQL);
     execute immediate V_PAT_SQL;
      V_PAT_SQL :=  'alter table '||tmp1.sql_||'_RECORD add partition P'||V_CJRQ||' values less than ('''||to_char(trunc(to_date(V_CJRQ,'yyyyMMdd')+1),'yyyyMMdd')||''')' ;
--dbms_output.put_line('V_PAT_SQL:'||V_PAT_SQL);
     execute immediate V_PAT_SQL;
         V_PAT_SQL :=  'alter table '||tmp1.sql_||'_inc add partition P'||V_CJRQ||' values less than ('''||to_char(trunc(to_date(V_CJRQ,'yyyyMMdd')+1),'yyyyMMdd')||''')' ;
--dbms_output.put_line('V_PAT_SQL:'||V_PAT_SQL);
     execute immediate V_PAT_SQL;
              V_PAT_SQL :=  'alter table '||tmp1.sql_||' add partition P'||V_CJRQ||' values less than ('''||to_char(trunc(to_date(V_CJRQ,'yyyyMMdd')+1),'yyyyMMdd')||''')' ;
--dbms_output.put_line('V_PAT_SQL:'||V_PAT_SQL);
     execute immediate V_PAT_SQL;
    V_PAT_SQL :=  'alter table '||tmp1.sql_||'_SPLIT add partition P'||V_CJRQ||' values less than ('''||to_char(trunc(to_date(V_CJRQ,'yyyyMMdd')+1),'yyyyMMdd')||''')
 
(
       subpartition P'||V_CJRQ||'_JG'||V_BSJGH||' values('''||V_BSJGH||''') tablespace EAST4
)' ;
--dbms_output.put_line('V_PAT_SQL:'||V_PAT_SQL);
  execute immediate V_PAT_SQL;
     V_PAT_SQL :=  'alter table '||tmp1.sql_||'_SPT_ERR add partition P'||V_CJRQ||' values less than ('''||to_char(trunc(to_date(V_CJRQ,'yyyyMMdd')+1),'yyyyMMdd')||''')
 
(
     subpartition P'||V_CJRQ||'_JG'||V_BSJGH||' values('''||V_BSJGH||''') tablespace EAST4
)' ;
--dbms_output.put_line('V_PAT_SQL:'||V_PAT_SQL);
     execute immediate V_PAT_SQL;
  end loop;
 
elsif V_TYPE='2' then
for tmp2 in cur1 loop
     V_SUB_PAT_SQL :='alter table '||tmp2.sql_||'_SPLIT modify partition P'||V_CJRQ||' add SUBPARTITION P'||V_CJRQ||'_JG'||V_BSJGH||' values('''||V_BSJGH||''') tablespace EAST4';
   -- dbms_output.put_line('V_SUB_PAT_SQL:'||V_SUB_PAT_SQL);
      execute immediate V_SUB_PAT_SQL;
     V_SUB_PAT_SQL :='alter table '||tmp2.sql_||'_SPT_ERR modify partition P'||V_CJRQ||' add SUBPARTITION P'||V_CJRQ||'_JG'||V_BSJGH||' values('''||V_BSJGH||''') tablespace EAST4';
    --dbms_output.put_line('V_SUB_PAT_SQL:'||V_SUB_PAT_SQL);
      execute immediate V_SUB_PAT_SQL;
  end loop;
 
end if;
 
end SP_IE_CRE_PARTITION;
/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值