Pular para o conteúdo
  • Este tópico contém 7 respostas, 4 vozes e foi atualizado pela última vez 15 anos, 8 meses atrás por Thiago Vilhena.
Visualizando 8 posts - 1 até 8 (de 8 do total)
  • Autor
    Posts
  • #94663
    Thiago Vilhena
    Participante

      Pessoal, tenho 2 procedures aqui, essa porcaria nao funciona, ta uma B…. completa rsrs, e pra adiantar nao conheço nada de PL/SQL e esse negocio tem q esta funcionando e otimizado até segunda feira. ferou-se, oque eu faço, me jogo daqui do 20 andar?? rsrs

      teoricamente sao 2 procedures, para automatizar a rotina de partionamentos de algumas tabelas, segue:


      CREATE OR REPLACE PROCEDURE JUR.gera_particoes_sisjur2
      is
      ano_mes char (6);
      ano number(4);
      mes number(2);
      particao_existente number(1) := 0;
      partition_name_xx1 varchar2(100);
      partition_name_xx2 varchar2(100);
      partition_name_xx3 varchar2(100);
      partition_name_xx4 varchar2(100);
      partition_name_xx5 varchar2(100);
      partition_name_xx6 varchar2(100);
      partition_name_xx7 varchar2(100);
      partition_name_xx8 varchar2(100);
      partition_name_xx9 varchar2(100);
      partition_name_xx10 varchar2(100);
      partition_name_xx11 varchar2(100);
      partition_name_xx12 varchar2(100);
      partition_name_xx13 varchar2(100);
      table_name_xx1 varchar2(100);
      table_name_xx2 varchar2(100);
      table_name_xx3 varchar2(100);
      table_name_xx4 varchar2(100);
      table_name_xx5 varchar2(100);
      table_name_xx6 varchar2(100);
      table_name_xx7 varchar2(100);
      table_name_xx8 varchar2(100);
      table_name_xx9 varchar2(100);
      table_name_xx10 varchar2(100);
      table_name_xx11 varchar2(100);
      table_name_xx12 varchar2(100);
      table_name_xx13 varchar2(100);
      tablespace_name_xx1 varchar2(100);
      tablespace_name_xx2 varchar2(100);
      tablespace_name_xx3 varchar2(100);
      tablespace_name_xx4 varchar2(100);
      tablespace_name_xx5 varchar2(100);
      tablespace_name_xx6 varchar2(100);
      tablespace_name_xx7 varchar2(100);
      tablespace_name_xx8 varchar2(100);
      tablespace_name_xx9 varchar2(100);
      tablespace_name_xx10 varchar2(100);
      tablespace_name_xx11 varchar2(100);
      tablespace_name_xx12 varchar2(100);
      tablespace_name_xx13 varchar2(100);
      begin
      particao_existente := 0;
      select to_char(sysdate, 'YYYYMM') into ano_mes from dual;
      ano := substr(ano_mes,1,4);
      -- mes := 12 --- substr(ano_mes,5,2);
      mes := substr(ano_mes,5,2);
      /* if mes = 12
      then
      ano := ano +1;
      mes := 01;
      else
      mes := mes + 1;
      end if; */
      dbms_output.put_line('ano mes ' || ano_mes);
      dbms_output.put_line('ano ' || to_char(ano));
      dbms_output.put_line('mes ' || to_char(mes));
      partition_name_xx1 := 'DAT_LOG_'||ano||'_'|| lpad(mes,2,0);
      table_name_xx1 := upper('log_andamento_processo');
      tablespace_name_xx1 := upper('TS_LMS_LOGANDPROCESSO_DATA_4M');

      dbms_output.put_line('partition_name_xx1 ' || partition_name_xx1);
      dbms_output.put_line('table_name_xx1 ' || table_name_xx1);
      dbms_output.put_line('tablespace_name_xx1 ' || tablespace_name_xx1);
      partition_name_xx2 := 'P'||ano|| lpad(mes,2,0);
      table_name_xx2 := upper('CONSOLIDACAO_FECH_JEC_GER_AT');
      tablespace_name_xx2 := upper('TS_LMS_CFECH_AT_DATA_4M');

      dbms_output.put_line('partition_name_xx2 ' || partition_name_xx2);
      dbms_output.put_line('table_name_xx2 ' || table_name_xx2);
      dbms_output.put_line('tablespace_name_xx2 ' || tablespace_name_xx2);
      partition_name_xx3 := 'P'||ano|| lpad(mes,2,0);
      table_name_xx2 := upper('CONSOLIDACAO_FECH_TRAB_GER_AT');
      tablespace_name_xx3 := upper('TS_LMS_CFECH_AT_DATA_4M');

      dbms_output.put_line('partition_name_xx3 ' || partition_name_xx3);
      dbms_output.put_line('table_name_xx3 ' || table_name_xx3);
      dbms_output.put_line('tablespace_name_xx3 ' || tablespace_name_xx3);
      partition_name_xx4 := 'FCGER_DATA_FEC_CIV_'||ano||'_'|| lpad(mes,2,0);
      table_name_xx4 := upper('CONSOLIDACOES_FECH_CIVEL_GER');
      tablespace_name_xx4 := upper('TS_LMS_CFECHTRABGER_DATA_4M');

      dbms_output.put_line('partition_name_xx4 ' || partition_name_xx4);
      dbms_output.put_line('table_name_xx4 ' || table_name_xx4);
      dbms_output.put_line('tablespace_name_xx4 ' || tablespace_name_xx4);
      partition_name_xx5 := 'FJGER_DATA_FECH_JEC_'||ano||'_'|| lpad(mes,2,0);
      table_name_xX5 := upper('CONSOLIDACOES_FECH_JEC_GER');
      tablespace_name_xx5 := upper('TS_LMS_CFECHJECGER_DATA_128M');
      dbms_output.put_line('partition_name_xx5 ' || partition_name_xx5);
      dbms_output.put_line('table_name_xx5 ' || table_name_xx5);
      dbms_output.put_line('tablespace_name_xx5 ' || tablespace_name_xx5);
      partition_name_xx6 := 'FJGER_DATA_FECH_JEC_'||ano||'_'|| lpad(mes,2,0);
      table_name_xx6 := upper('CONSOLIDACOES_FECH_JEC_PAG_GER');
      tablespace_name_xx6 := upper('TS_LMS_CFECHJECPAGGER_DATA_4M');
      dbms_output.put_line('partition_name_xx6 ' || partition_name_xx6);
      dbms_output.put_line('table_name_xx6 ' || table_name_xx6);
      dbms_output.put_line('tablespace_name_xx6 ' || tablespace_name_xx6);
      partition_name_xx7 := 'FTG_DATA_FECH_TRAB_'||ano||'_'|| lpad(mes,2,0);
      table_name_xx7 := upper('CONSOLIDACOES_FECH_TRAB_GER');
      tablespace_name_xx7 := upper('TS_LMS_CFECHTRABGER_DATA_128M');
      dbms_output.put_line('partition_name_xx7 ' || partition_name_xx7);
      dbms_output.put_line('table_name_xx7 ' || table_name_xx7);
      dbms_output.put_line('tablespace_name_xx7 ' || tablespace_name_xx7);
      partition_name_xx8 := 'p'||ano||'_'|| lpad(mes,2,0);
      table_name_xx8 := upper('POSICAO_FECHAMENTO_TRAB');
      tablespace_name_xx8 := upper('TS_LMS_LOGANDPROCESSO_DATA_4M');
      dbms_output.put_line('partition_name_xx8 ' || partition_name_xx8);
      dbms_output.put_line('table_name_xx8 ' || table_name_xx8);
      dbms_output.put_line('tablespace_name_xx8 ' || tablespace_name_xx8);
      partition_name_xx9 := 'P'||ano||'_'|| lpad(mes,2,0);
      table_name_xx9 := upper('POSICOES_FECHAMENTOS_ADMS');
      tablespace_name_xx9 := upper('TS_LMS_PFECHADMS_DATA_4M');
      dbms_output.put_line('partition_name_xx9 ' || partition_name_xx9);
      dbms_output.put_line('table_name_xx9 ' || table_name_xx9);
      dbms_output.put_line('tablespace_name_xx9 ' || tablespace_name_xx9);
      partition_name_xx10 := 'FCHCC_M_A_FECH_'||ano||'_'|| lpad(mes,2,0);
      table_name_xx10 := upper('POSICOES_FECHAMENTOS_CIVEIS');
      tablespace_name_xx10 := upper('TS_LMS_LOGANDPROCESSO_DATA_4M');
      dbms_output.put_line('partition_name_xx10 ' || partition_name_xx10);
      dbms_output.put_line('table_name_xx10 ' || table_name_xx10);
      dbms_output.put_line('tablespace_name_xx10 ' || tablespace_name_xx10);
      partition_name_xx11 := 'P'||ano||'_'|| lpad(mes,2,0);
      table_name_xx11 := upper('POSICOES_FECHAMENTOS_GARANTIAS');
      tablespace_name_xx11 := upper('TS_LMS_PFECHGAR_DATA_4M');
      dbms_output.put_line('partition_name_xx11 ' || partition_name_xx11);
      dbms_output.put_line('table_name_xx11 ' || table_name_xx11);
      dbms_output.put_line('tablespace_name_xx11 ' || tablespace_name_xx11);
      partition_name_xx12 := 'FECHJ_MES_ANO_FECH_'||ano||'_'|| lpad(mes,2,0);
      table_name_xx12 := upper('POSICOES_FECHAMENTOS_JUIZADOS');
      tablespace_name_xx12 := upper('TS_LMS_PFECHJUIZA_DATA_4M');
      dbms_output.put_line('partition_name_xx12 ' || partition_name_xx12);
      dbms_output.put_line('table_name_xx12 ' || table_name_xx12);
      dbms_output.put_line('tablespace_name_xx12 ' || tablespace_name_xx12);
      partition_name_xx13 := 'P'||ano||'_'|| lpad(mes,2,0);
      table_name_xx13 := upper('POSICOES_FECHAMENTOS_TRIBS');
      tablespace_name_xx13 := upper('TS_LMS_PFECHTRIBS_DATA_4M');
      dbms_output.put_line('partition_name_xx13 ' || partition_name_xx13);
      dbms_output.put_line('table_name_xx13 ' || table_name_xx13);
      dbms_output.put_line('tablespace_name_xx13 ' || tablespace_name_xx13);

      select count(*) into particao_existente from all_tab_partitions
      where
      table_name = table_name_xx1 and
      partition_name = partition_name_xx1 ;
      if particao_existente > 0
      then
      dbms_output.put_line('existe particao ' || ano_mes || ' ou anteriores : Sim ' || partition_name_xx1);
      if ( last_day(sysdate) - sysdate) < 15 then if mes = 12 then ano := ano +1; mes := 01; partition_name_xx1 := 'DAT_LOG_'||ano||'_'|| lpad(mes,2,0); dbms_output.put_line('criar nova particao na tabela log_andamento_processo ' || partition_name_xx1); Adicionar_particoes_sisjur(table_name_xx1, partition_name_xx1, TO_CHAR(lpad(mes + 1,2,0)), TO_CHAR(ANO)); else MES := MES +1; partition_name_xx1 := 'DAT_LOG_'||ano||'_'|| lpad(mes,2,0); dbms_output.put_line('criar nova particao na tabela log_andamento_processo ' || partition_name_xx1); Adicionar_particoes_sisjur(table_name_xx1, partition_name_xx1, TO_CHAR(lpad(mes + 1,2,0)), TO_CHAR(ANO)); end if; else dbms_output.put_line('não esta na hora de criar nova particao na tabela log_andamento_processo '); end if; else dbms_output.put_line('existe particao ' || ano_mes || ' ou anteriores : Nao ' || partition_name_xx1); if ( last_day(sysdate) - sysdate) < 15 then if mes = 12 then ano := ano +1; mes := 01; partition_name_xx1 := 'DAT_LOG_'||ano||'_'|| lpad(mes,2,0); dbms_output.put_line('criar nova particao na tabela log_andamento_processo ' || partition_name_xx1); Adicionar_particoes_sisjur(table_name_xx1, partition_name_xx1, TO_CHAR(lpad(mes + 1,2,0)), TO_CHAR(ANO)); else dbms_output.put_line('criar nova particao na tabela log_andamento_processo ' || partition_name_xx1); Adicionar_particoes_sisjur(table_name_xx1, partition_name_xx1, TO_CHAR(lpad(mes + 1,2,0)), TO_CHAR(ANO)); end if; else dbms_output.put_line('não esta na hora de criar nova particao na tabela log_andamento_processo '); end if; end if; select count(*) into particao_existente from all_tab_partitions where table_name = table_name_xx2 and partition_name = partition_name_xx2 ; if particao_existente > 0
      then
      dbms_output.put_line('existe particao ' || particao_existente);
      if ( last_day(sysdate) - sysdate) < 15 then if mes = 12 then ano := ano +1; mes := 01; partition_name_xx2 := 'P'||ano|| lpad(mes,2,0); dbms_output.put_line('criar nova particao na tabela CONSOLIDACAO_FECH_JEC_GER_AT ' || partition_name_xx2); Adicionar_particoes_sisjur(table_name_xx2, partition_name_xx2, TO_CHAR(lpad(mes + 1,2,0)), TO_CHAR(ANO)); else MES := MES +1; partition_name_xx2 := 'P'||ano|| lpad(mes,2,0); dbms_output.put_line('criar nova particao na tabela CONSOLIDACAO_FECH_JEC_GER_AT ' || partition_name_xx2); Adicionar_particoes_sisjur(table_name_xx2, partition_name_xx2, TO_CHAR(lpad(mes + 1,2,0)), TO_CHAR(ANO)); end if; else dbms_output.put_line('não esta na hora de criar nova particao na tabela CONSOLIDACAO_FECH_JEC_GER_AT '); end if; else dbms_output.put_line('não existe particao ' || particao_existente); if ( last_day(sysdate) - sysdate) < 15 then if mes = 12 then ano := ano +1; mes := 01; partition_name_xx2 := 'P'||ano|| lpad(mes,2,0); dbms_output.put_line('criar nova particao na tabela lCONSOLIDACAO_FECH_JEC_GER_AT' || partition_name_xx2); Adicionar_particoes_sisjur(table_name_xx2, partition_name_xx2, TO_CHAR(lpad(mes + 1,2,0)), TO_CHAR(ANO)); else dbms_output.put_line('criar nova particao na tabela CONSOLIDACAO_FECH_JEC_GER_AT ' || partition_name_xx2); Adicionar_particoes_sisjur(table_name_xx2, partition_name_xx2, TO_CHAR(lpad(mes + 1,2,0)), TO_CHAR(ANO)); end if; else dbms_output.put_line('não esta na hora de criar nova particao na tabela CONSOLIDACAO_FECH_JEC_GER_AT '); end if; end if; select count(*) into particao_existente from all_tab_partitions where table_name = table_name_xx3 and partition_name = partition_name_xx3 ; if particao_existente > 0
      then
      dbms_output.put_line('existe particao ' || particao_existente);
      if ( last_day(sysdate) - sysdate) < 15 then if mes = 12 then ano := ano +1; mes := 01; partition_name_xx3 := 'P'||ano|| lpad(mes,2,0); dbms_output.put_line('criar nova particao na tabela CONSOLIDACAO_FECH_TRAB_GER_AT ' || partition_name_xx3); Adicionar_particoes_sisjur(table_name_xx3, partition_name_xx3, TO_CHAR(lpad(mes + 1,2,0)), TO_CHAR(ANO)); else MES := MES +1; partition_name_xx3 := 'P'||ano|| lpad(mes,2,0); dbms_output.put_line('criar nova particao na tabela CONSOLIDACAO_FECH_TRAB_GER_AT ' || partition_name_xx3); Adicionar_particoes_sisjur(table_name_xx3, partition_name_xx3, TO_CHAR(lpad(mes + 1,2,0)), TO_CHAR(ANO)); end if; else dbms_output.put_line('não esta na hora de criar nova particao na tabela CONSOLIDACAO_FECH_TRAB_GER_AT '); end if; else dbms_output.put_line('não existe particao ' || particao_existente); if ( last_day(sysdate) - sysdate) < 15 then if mes = 12 then ano := ano +1; mes := 01; partition_name_xx3 := 'P'||ano|| lpad(mes,2,0); dbms_output.put_line('criar nova particao na tabela CONSOLIDACAO_FECH_TRAB_GER_AT' || partition_name_xx3); Adicionar_particoes_sisjur(table_name_xx3, partition_name_xx3, TO_CHAR(lpad(mes + 1,2,0)), TO_CHAR(ANO)); else dbms_output.put_line('criar nova particao na tabela CONSOLIDACAO_FECH_TRAB_GER_AT ' || partition_name_xx3); Adicionar_particoes_sisjur(table_name_xx3, partition_name_xx3, TO_CHAR(lpad(mes + 1,2,0)), TO_CHAR(ANO)); end if; else dbms_output.put_line('não esta na hora de criar nova particao na tabela CONSOLIDACAO_FECH_TRAB_GER_AT '); end if; end if; select count(*) into particao_existente from all_tab_partitions where table_name = table_name_xx4 and partition_name = partition_name_xx4 ; if particao_existente > 0
      then
      dbms_output.put_line('existe particao ' || particao_existente);
      if ( last_day(sysdate) - sysdate) < 15 then if mes = 12 then ano := ano +1; mes := 01; partition_name_xx4 := 'FCGER_DATA_FEC_CIV_'||ano||'_'|| lpad(mes,2,0); dbms_output.put_line('criar nova particao na tabela CONSOLIDACOES_FECH_CIVEL_GER ' || partition_name_xx4); Adicionar_particoes_sisjur(table_name_xx4, partition_name_xx4, TO_CHAR(lpad(mes + 1,2,0)), TO_CHAR(ANO)); else MES := MES +1; partition_name_xx4 := 'FCGER_DATA_FEC_CIV_'||ano||'_'|| lpad(mes,2,0); dbms_output.put_line('criar nova particao na tabela CONSOLIDACOES_FECH_CIVEL_GER ' || partition_name_xx4); Adicionar_particoes_sisjur(table_name_xx4, partition_name_xx4, TO_CHAR(lpad(mes + 1,2,0)), TO_CHAR(ANO)); end if; else dbms_output.put_line('não esta na hora de criar nova particao na tabela CONSOLIDACOES_FECH_CIVEL_GER '); end if; else dbms_output.put_line('não existe particao ' || particao_existente); if ( last_day(sysdate) - sysdate) < 15 then if mes = 12 then ano := ano +1; mes := 01; partition_name_xx4 := 'FCGER_DATA_FEC_CIV_'||ano||'_'|| lpad(mes,2,0); dbms_output.put_line('criar nova particao na tabela CONSOLIDACOES_FECH_CIVEL_GER' || partition_name_xx4); Adicionar_particoes_sisjur(table_name_xx4, partition_name_xx4, TO_CHAR(lpad(mes + 1,2,0)), TO_CHAR(ANO)); else dbms_output.put_line('criar nova particao na tabela CONSOLIDACOES_FECH_CIVEL_GER ' || partition_name_xx4); Adicionar_particoes_sisjur(table_name_xx4, partition_name_xx4, TO_CHAR(lpad(mes + 1,2,0)), TO_CHAR(ANO)); end if; else dbms_output.put_line('não esta na hora de criar nova particao na tabela CONSOLIDACOES_FECH_CIVEL_GER '); end if; end if; select count(*) into particao_existente from all_tab_partitions where table_name = table_name_xx5 and partition_name = partition_name_xx5 ; if particao_existente > 0
      then
      dbms_output.put_line('existe particao ' || particao_existente);
      if ( last_day(sysdate) - sysdate) < 15 then if mes = 12 then ano := ano +1; mes := 01; partition_name_xx5 := 'FJGER_DATA_FECH_JEC_'||ano||'_'|| lpad(mes,2,0); dbms_output.put_line('criar nova particao na tabela CONSOLIDACOES_FECH_JEC_GER' || partition_name_xx5); Adicionar_particoes_sisjur(table_name_xx5, partition_name_xx5, TO_CHAR(lpad(mes + 1,2,0)), TO_CHAR(ANO)); else MES := MES +1; partition_name_xx5 := 'FJGER_DATA_FECH_JEC_'||ano||'_'|| lpad(mes,2,0); dbms_output.put_line('criar nova particao na tabela CONSOLIDACOES_FECH_JEC_GER' || partition_name_xx5); Adicionar_particoes_sisjur(table_name_xx5, partition_name_xx5, TO_CHAR(lpad(mes + 1,2,0)), TO_CHAR(ANO)); end if; else dbms_output.put_line('não esta na hora de criar nova particao na tabela CONSOLIDACOES_FECH_JEC_GER '); end if; else dbms_output.put_line('não existe particao ' || particao_existente); if ( last_day(sysdate) - sysdate) < 15 then if mes = 12 then ano := ano +1; mes := 01; partition_name_xx5 := 'FJGER_DATA_FECH_JEC_'||ano||'_'|| lpad(mes,2,0); dbms_output.put_line('criar nova particao na tabela CONSOLIDACOES_FECH_JEC_GER' || partition_name_xx5); Adicionar_particoes_sisjur(table_name_xx5, partition_name_xx5, TO_CHAR(lpad(mes + 1,2,0)), TO_CHAR(ANO)); else dbms_output.put_line('criar nova particao na tabela CONSOLIDACOES_FECH_JEC_GER ' || partition_name_xx5); Adicionar_particoes_sisjur(table_name_xx5, partition_name_xx6, TO_CHAR(lpad(mes + 1,2,0)), TO_CHAR(ANO)); end if; else dbms_output.put_line('não esta na hora de criar nova particao na tabela CONSOLIDACOES_FECH_JEC_GER '); end if; end if; select count(*) into particao_existente from all_tab_partitions where table_name = table_name_xx6 and partition_name = partition_name_xx6 ; if particao_existente > 0
      then
      dbms_output.put_line('existe particao ' || particao_existente);
      if ( last_day(sysdate) - sysdate) < 15 then if mes = 12 then ano := ano +1; mes := 01; partition_name_xx6 := 'FJGER_DATA_FECH_JEC_'||ano||'_'|| lpad(mes,2,0); dbms_output.put_line('criar nova particao na tabela CONSOLIDACOES_FECH_JEC_PAG_GER' || partition_name_xx6); Adicionar_particoes_sisjur(table_name_xx6, partition_name_xx6, TO_CHAR(lpad(mes + 1,2,0)), TO_CHAR(ANO)); else MES := MES +1; partition_name_xx6 := 'FJGER_DATA_FECH_JEC_'||ano||'_'|| lpad(mes,2,0); dbms_output.put_line('criar nova particao na tabela CONSOLIDACOES_FECH_JEC_PAG_GER' || partition_name_xx6); Adicionar_particoes_sisjur(table_name_xx6, partition_name_xx6, TO_CHAR(lpad(mes + 1,2,0)), TO_CHAR(ANO)); end if; else dbms_output.put_line('não esta na hora de criar nova particao na tabela CONSOLIDACOES_FECH_JEC_PAG_GER '); end if; else dbms_output.put_line('não existe particao ' || particao_existente); if ( last_day(sysdate) - sysdate) < 15 then if mes = 12 then ano := ano +1; mes := 01; partition_name_xx6 := 'FJGER_DATA_FECH_JEC_'||ano||'_'|| lpad(mes,2,0); dbms_output.put_line('criar nova particao na tabela CONSOLIDACOES_FECH_JEC_PAG_GER' || partition_name_xx6); Adicionar_particoes_sisjur(table_name_xx6, partition_name_xx6, TO_CHAR(lpad(mes + 1,2,0)), TO_CHAR(ANO)); else dbms_output.put_line('criar nova particao na tabela CONSOLIDACOES_FECH_JEC_PAG_GER ' || partition_name_xx6); Adicionar_particoes_sisjur(table_name_xx6, partition_name_xx6, TO_CHAR(lpad(mes + 1,2,0)), TO_CHAR(ANO)); end if; else dbms_output.put_line('não esta na hora de criar nova particao na tabela CONSOLIDACOES_FECH_JEC_PAG_GER '); end if; end if; select count(*) into particao_existente from all_tab_partitions where table_name = table_name_xx7 and partition_name = partition_name_xx7 ; if particao_existente > 0
      then
      dbms_output.put_line('existe particao ' || particao_existente);
      if ( last_day(sysdate) - sysdate) < 15 then if mes = 12 then ano := ano +1; mes := 01; partition_name_xx7 := 'FTG_DATA_FECH_TRAB_'||ano||'_'|| lpad(mes,2,0); dbms_output.put_line('criar nova particao na tabela CONSOLIDACOES_FECH_TRAB_GER' || partition_name_xx7); Adicionar_particoes_sisjur(table_name_xx7, partition_name_xx7, TO_CHAR(lpad(mes + 1,2,0)), TO_CHAR(ANO)); else MES := MES +1; partition_name_xx7 := 'FTG_DATA_FECH_TRAB_'||ano||'_'|| lpad(mes,2,0); dbms_output.put_line('criar nova particao na tabela CONSOLIDACOES_FECH_TRAB_GER' || partition_name_xx7); Adicionar_particoes_sisjur(table_name_xx7, partition_name_xx7, TO_CHAR(lpad(mes + 1,2,0)), TO_CHAR(ANO)); end if; else dbms_output.put_line('não esta na hora de criar nova particao na tabela CONSOLIDACOES_FECH_TRAB_GER '); end if; else dbms_output.put_line('não existe particao ' || particao_existente); if ( last_day(sysdate) - sysdate) < 15 then if mes = 12 then ano := ano +1; mes := 01; partition_name_xx7 := 'FTG_DATA_FECH_TRAB_'||ano||'_'|| lpad(mes,2,0); dbms_output.put_line('criar nova particao na tabela CONSOLIDACOES_FECH_TRAB_GER' || partition_name_xx7); Adicionar_particoes_sisjur(table_name_xx7, partition_name_xx7, TO_CHAR(lpad(mes + 1,2,0)), TO_CHAR(ANO)); else dbms_output.put_line('criar nova particao na tabela CONSOLIDACOES_FECH_TRAB_GER ' || partition_name_xx7); Adicionar_particoes_sisjur(table_name_xx7, partition_name_xx7, TO_CHAR(lpad(mes + 1,2,0)), TO_CHAR(ANO)); end if; else dbms_output.put_line('não esta na hora de criar nova particao na tabela CONSOLIDACOES_FECH_TRAB_GER '); end if; end if; select count(*) into particao_existente from all_tab_partitions where table_name = table_name_xx8 and partition_name = partition_name_xx8 ; if particao_existente > 0
      then
      dbms_output.put_line('existe particao ' || particao_existente);
      if ( last_day(sysdate) - sysdate) < 15 then if mes = 12 then ano := ano +1; mes := 01; partition_name_xx8 := 'p'||ano||'_'|| lpad(mes,2,0); dbms_output.put_line('criar nova particao na tabela POSICAO_FECHAMENTO_TRAB' || partition_name_xx8); Adicionar_particoes_sisjur(table_name_xx8, partition_name_xx8, TO_CHAR(lpad(mes + 1,2,0)), TO_CHAR(ANO)); else MES := MES +1; partition_name_xx8 := 'p'||ano||'_'|| lpad(mes,2,0); dbms_output.put_line('criar nova particao na tabela POSICAO_FECHAMENTO_TRAB' || partition_name_xx8); Adicionar_particoes_sisjur(table_name_xx8, partition_name_xx8, TO_CHAR(lpad(mes + 1,2,0)), TO_CHAR(ANO)); end if; else dbms_output.put_line('não esta na hora de criar nova particao na tabela POSICAO_FECHAMENTO_TRAB '); end if; else dbms_output.put_line('não existe particao ' || particao_existente); if ( last_day(sysdate) - sysdate) < 15 then if mes = 12 then ano := ano +1; mes := 01; partition_name_xx8 := 'p'||ano||'_'|| lpad(mes,2,0); dbms_output.put_line('criar nova particao na tabela POSICAO_FECHAMENTO_TRAB' || partition_name_xx8); Adicionar_particoes_sisjur(table_name_xx8, partition_name_xx8, TO_CHAR(lpad(mes + 1,2,0)), TO_CHAR(ANO)); else dbms_output.put_line('criar nova particao na tabela POSICAO_FECHAMENTO_TRAB ' || partition_name_xx8); Adicionar_particoes_sisjur(table_name_xx8, partition_name_xx8, TO_CHAR(lpad(mes + 1,2,0)), TO_CHAR(ANO)); end if; else dbms_output.put_line('não esta na hora de criar nova particao na tabela POSICAO_FECHAMENTO_TRAB '); end if; end if; select count(*) into particao_existente from all_tab_partitions where table_name = table_name_xx9 and partition_name = partition_name_xx9 ; if particao_existente > 0
      then
      dbms_output.put_line('existe particao ' || particao_existente);
      if ( last_day(sysdate) - sysdate) < 15 then if mes = 12 then ano := ano +1; mes := 01; partition_name_xx9 := 'P'||ano||'_'|| lpad(mes,2,0); dbms_output.put_line('criar nova particao na tabela POSICOES_FECHAMENTOS_ADMS' || partition_name_xx9); Adicionar_particoes_sisjur(table_name_xx9, partition_name_xx9, TO_CHAR(lpad(mes + 1,2,0)), TO_CHAR(ANO)); else MES := MES +1; partition_name_xx9 := 'P'||ano||'_'|| lpad(mes,2,0); dbms_output.put_line('criar nova particao na tabela POSICOES_FECHAMENTOS_ADMS' || partition_name_xx9); Adicionar_particoes_sisjur(table_name_xx9, partition_name_xx9, TO_CHAR(lpad(mes + 1,2,0)), TO_CHAR(ANO)); end if; else dbms_output.put_line('não esta na hora de criar nova particao na tabela POSICOES_FECHAMENTOS_ADMS '); end if; else dbms_output.put_line('não existe particao ' || particao_existente); if ( last_day(sysdate) - sysdate) < 15 then if mes = 12 then ano := ano +1; mes := 01; partition_name_xx9 := 'P'||ano||'_'|| lpad(mes,2,0); dbms_output.put_line('criar nova particao na tabela POSICOES_FECHAMENTOS_ADMS' || partition_name_xx9); Adicionar_particoes_sisjur(table_name_xx9, partition_name_xx9, TO_CHAR(lpad(mes + 1,2,0)), TO_CHAR(ANO)); else dbms_output.put_line('criar nova particao na tabela POSICOES_FECHAMENTOS_ADMS ' || partition_name_xx9); Adicionar_particoes_sisjur(table_name_xx9, partition_name_xx9, TO_CHAR(lpad(mes + 1,2,0)), TO_CHAR(ANO)); end if; else dbms_output.put_line('não esta na hora de criar nova particao na tabela POSICOES_FECHAMENTOS_ADMS '); end if; end if; select count(*) into particao_existente from all_tab_partitions where table_name = table_name_xx10 and partition_name = partition_name_xx10 ; if particao_existente > 0
      then
      dbms_output.put_line('existe particao ' || particao_existente);
      if ( last_day(sysdate) - sysdate) < 15 then if mes = 12 then ano := ano +1; mes := 01; partition_name_xx10 := 'FCHCC_M_A_FECH_'||ano||'_'|| lpad(mes,2,0); dbms_output.put_line('criar nova particao na tabela POSICOES_FECHAMENTOS_CIVEIS' || partition_name_xx10); Adicionar_particoes_sisjur(table_name_xx10, partition_name_xx10, TO_CHAR(lpad(mes + 1,2,0)), TO_CHAR(ANO)); else MES := MES +1; partition_name_xx10 :='FCHCC_M_A_FECH_'||ano||'_'|| lpad(mes,2,0); dbms_output.put_line('criar nova particao na tabela POSICOES_FECHAMENTOS_CIVEIS' || partition_name_xx10); Adicionar_particoes_sisjur(table_name_xx10, partition_name_xx10, TO_CHAR(lpad(mes + 1,2,0)), TO_CHAR(ANO)); end if; else dbms_output.put_line('não esta na hora de criar nova particao na tabela POSICOES_FECHAMENTOS_CIVEIS '); end if; else dbms_output.put_line('não existe particao ' || particao_existente); if ( last_day(sysdate) - sysdate) < 15 then if mes = 12 then ano := ano +1; mes := 01; partition_name_xx10 :='FCHCC_M_A_FECH_'||ano||'_'|| lpad(mes,2,0); dbms_output.put_line('criar nova particao na tabela POSICOES_FECHAMENTOS_CIVEIS' || partition_name_xx10); Adicionar_particoes_sisjur(table_name_xx10, partition_name_xx10, TO_CHAR(lpad(mes + 1,2,0)), TO_CHAR(ANO)); else dbms_output.put_line('criar nova particao na tabela POSICOES_FECHAMENTOS_CIVEIS ' || partition_name_xx10); Adicionar_particoes_sisjur(table_name_xx10, partition_name_xx10, TO_CHAR(lpad(mes + 1,2,0)), TO_CHAR(ANO)); end if; else dbms_output.put_line('não esta na hora de criar nova particao na tabela POSICOES_FECHAMENTOS_CIVEIS '); end if; end if; select count(*) into particao_existente from all_tab_partitions where table_name = table_name_xx11 and partition_name = partition_name_xx11 ; if particao_existente > 0
      then
      dbms_output.put_line('existe particao ' || particao_existente);
      if ( last_day(sysdate) - sysdate) < 15 then if mes = 12 then ano := ano +1; mes := 01; partition_name_xx11 := 'P'||ano||'_'|| lpad(mes,2,0); dbms_output.put_line('criar nova particao na tabela POSICOES_FECHAMENTOS_GARANTIAS' || partition_name_xx11); Adicionar_particoes_sisjur(table_name_xx11, partition_name_xx11, TO_CHAR(lpad(mes + 1,2,0)), TO_CHAR(ANO)); else MES := MES +1; partition_name_xx11 := 'P'||ano||'_'|| lpad(mes,2,0); dbms_output.put_line('criar nova particao na tabela POSICOES_FECHAMENTOS_GARANTIAS' || partition_name_xx11); Adicionar_particoes_sisjur(table_name_xx11, partition_name_xx11, TO_CHAR(lpad(mes + 1,2,0)), TO_CHAR(ANO)); end if; else dbms_output.put_line('não esta na hora de criar nova particao na tabela POSICOES_FECHAMENTOS_GARANTIAS '); end if; else dbms_output.put_line('não existe particao ' || particao_existente); if ( last_day(sysdate) - sysdate) < 15 then if mes = 12 then ano := ano +1; mes := 01; partition_name_xx11 := 'P'||ano||'_'|| lpad(mes,2,0); dbms_output.put_line('criar nova particao na tabela POSICOES_FECHAMENTOS_GARANTIAS' || partition_name_xx11); Adicionar_particoes_sisjur(table_name_xx11, partition_name_xx11, TO_CHAR(lpad(mes + 1,2,0)), TO_CHAR(ANO)); else dbms_output.put_line('criar nova particao na tabela POSICOES_FECHAMENTOS_GARANTIAS ' || partition_name_xx11); Adicionar_particoes_sisjur(table_name_xx11, partition_name_xx11, TO_CHAR(lpad(mes + 1,2,0)), TO_CHAR(ANO)); end if; else dbms_output.put_line('não esta na hora de criar nova particao na tabela POSICOES_FECHAMENTOS_GARANTIAS '); end if; end if; select count(*) into particao_existente from all_tab_partitions where table_name = table_name_xx12 and partition_name = partition_name_xx12 ; if particao_existente > 0
      then
      dbms_output.put_line('existe particao ' || particao_existente);
      if ( last_day(sysdate) - sysdate) < 15 then if mes = 12 then ano := ano +1; mes := 01; partition_name_xx12 := 'FECHJ_MES_ANO_FECH_'||ano||'_'|| lpad(mes,2,0); dbms_output.put_line('criar nova particao na tabela POSICOES_FECHAMENTOS_JUIZADOS' || partition_name_xx12); Adicionar_particoes_sisjur(table_name_xx12, partition_name_xx12, TO_CHAR(lpad(mes + 1,2,0)), TO_CHAR(ANO)); else MES := MES +1; partition_name_xx12 := 'FECHJ_MES_ANO_FECH_'||ano||'_'|| lpad(mes,2,0); dbms_output.put_line('criar nova particao na tabela POSICOES_FECHAMENTOS_JUIZADOS' || partition_name_xx12); Adicionar_particoes_sisjur(table_name_xx12, partition_name_xx12, TO_CHAR(lpad(mes + 1,2,0)), TO_CHAR(ANO)); end if; else dbms_output.put_line('não esta na hora de criar nova particao na tabela POSICOES_FECHAMENTOS_JUIZADOS '); end if; else dbms_output.put_line('não existe particao ' || particao_existente); if ( last_day(sysdate) - sysdate) < 15 then if mes = 12 then ano := ano +1; mes := 01; partition_name_xx12 := 'FECHJ_MES_ANO_FECH_'||ano||'_'|| lpad(mes,2,0); dbms_output.put_line('criar nova particao na tabela POSICOES_FECHAMENTOS_JUIZADOS' || partition_name_xx12); Adicionar_particoes_sisjur(table_name_xx12, partition_name_xx12, TO_CHAR(lpad(mes + 1,2,0)), TO_CHAR(ANO)); else dbms_output.put_line('criar nova particao na tabela POSICOES_FECHAMENTOS_JUIZADOS ' || partition_name_xx12); Adicionar_particoes_sisjur(table_name_xx12, partition_name_xx12, TO_CHAR(lpad(mes + 1,2,0)), TO_CHAR(ANO)); end if; else dbms_output.put_line('não esta na hora de criar nova particao na tabela POSICOES_FECHAMENTOS_JUIZADOS '); end if; end if; select count(*) into particao_existente from all_tab_partitions where table_name = table_name_xx13 and partition_name = partition_name_xx13 ; if particao_existente > 0
      then
      dbms_output.put_line('existe particao ' || particao_existente);
      if ( last_day(sysdate) - sysdate) < 15 then if mes = 12 then ano := ano +1; mes := 01; partition_name_xx13 := 'P'||ano||'_'|| lpad(mes,2,0); dbms_output.put_line('criar nova particao na tabela POSICOES_FECHAMENTOS_TRIBS' || partition_name_xx13); Adicionar_particoes_sisjur(table_name_xx13, partition_name_xx13, TO_CHAR(lpad(mes + 1,2,0)), TO_CHAR(ANO)); else MES := MES +1; partition_name_xx13 := 'P'||ano||'_'|| lpad(mes,2,0); dbms_output.put_line('criar nova particao na tabela POSICOES_FECHAMENTOS_TRIBS' || partition_name_xx13); Adicionar_particoes_sisjur(table_name_xx13, partition_name_xx13, TO_CHAR(lpad(mes + 1,2,0)), TO_CHAR(ANO)); end if; else dbms_output.put_line('não esta na hora de criar nova particao na tabela POSICOES_FECHAMENTOS_TRIBS '); end if; else dbms_output.put_line('não existe particao ' || particao_existente); if ( last_day(sysdate) - sysdate) < 15 then if mes = 12 then ano := ano +1; mes := 01; partition_name_xx13 := 'P'||ano||'_'|| lpad(mes,2,0); dbms_output.put_line('criar nova particao na tabela POSICOES_FECHAMENTOS_TRIBS' || partition_name_xx13); Adicionar_particoes_sisjur(table_name_xx13, partition_name_xx13, TO_CHAR(lpad(mes + 1,2,0)), TO_CHAR(ANO)); else dbms_output.put_line('criar nova particao na tabela POSICOES_FECHAMENTOS_TRIBS ' || partition_name_xx13); Adicionar_particoes_sisjur(table_name_xx13, partition_name_xx13, TO_CHAR(lpad(mes + 1,2,0)), TO_CHAR(ANO)); end if; else dbms_output.put_line('não esta na hora de criar nova particao na tabela POSICOES_FECHAMENTOS_TRIBS '); end if; end if; exception when others then null; dbms_output.put_line(' erro others '); end; /


      CREATE OR REPLACE procedure JUR.Adicionar_particoes_sisjur
      (
      vtabela in varchar2,
      vpartition_nome in varchar2,
      vmes in char,
      vano in char
      )
      is
      v_cursor integer;
      vscript varchar2(2000);
      vparticao_data char(7);
      vresul integer;
      begin
      v_cursor := dbms_sql.open_cursor;
      vparticao_data := vano||'-'||vmes;
      begin
      dbms_output.put_line('tabela : ' || vtabela);
      dbms_output.put_line('particao : ' || vpartition_nome);
      dbms_output.put_line('mes : ' || vmes);
      dbms_output.put_line('ano : ' || vano);
      dbms_output.put_line('particao data : ' || vparticao_data);
      vscript := 'ALTER TABLE '||vtabela||' ADD PARTITION ' || vpartition_nome || ' VALUES LESS THAN(TO_DATE(''';
      vscript := vscript || vparticao_data || '-01 00:00:00''';
      vscript := vscript || ',' || '''SYYYY-MM-DD HH24:MI:SS''';
      vscript := vscript || ',' || '''NLS_CALENDAR=GREGORIAN''';
      vscript := vscript || ')) TABLESPACE TS_LMS_LOGPROCESSO_DATA_128M PCTFREE 10 PCTUSED 40 INITRANS 5 MAXTRANS 255 STORAGE (FREELISTS 10 FREELIST GROUPS 1) LOGGING ';
      dbms_output.put_line('script : ' || vscript);
      dbms_sql.parse(v_cursor, vscript, dbms_sql.native);
      vresul := dbms_sql.execute(v_cursor);
      end;
      end Adicionar_particoes_sisjur;
      /

      Por favor.. to perdido...

      #94666
      fsitja
      Participante

        Minha cabeça… dói… 😯

        #94667
        Avatar photoRegis Araujo
        Participante

          Fala Thiago..

          Mano, q monstro é este?!?!!?

          Velho.. seguinte.. acho melhor vc fazer outra PROC.. mas uma dúvida.. vc precisa de uma procedure para criar novas partições apenas a cada novo mês correto??

          Eh mais facil criar outra PROC.. e ai vc usa o SCHEDULER do oracle para rodar isto todo dia 27 de cada mês, criando uma nova partição para o mês seguinte..!!

          Acho muito mais facil.. mas para isto precisamos saber se estes “MONSTROS” apenas criam uma nova partição ou fazem algo a mais…!!

          Abraços..!!

          #94670
          vieri
          Participante

            Essa produre é um lixo e só serve para essa tabela,
            o cara que gastou umas 30horas pra fazer isso ai, já teria feitos todas partições até 2078 com initial extent pequeno, e não teria te dado esse trabalho.

            Nao entendo pq vc tem que colocar isso pra funcionar até segunda..
            tem chefe que é maluco.. se fosse algo do négocio…

            Crie as partições e diga que vai criar um outro mecanismo..
            para adicionar automáticamente.

            Adicionar partições é um alter table, um script dinâmico dentro de um shel script agendados na crontab gerando um .sql resolve isso..

            #94672
            Thiago Vilhena
            Participante

              [quote=”Thunder_Catz”:3txb0mnf]Fala Thiago..

              Mano, q monstro é este?!?!!?

              Velho.. seguinte.. acho melhor vc fazer outra PROC.. mas uma dúvida.. vc precisa de uma procedure para criar novas partições apenas a cada novo mês correto??

              Eh mais facil criar outra PROC.. e ai vc usa o SCHEDULER do oracle para rodar isto todo dia 27 de cada mês, criando uma nova partição para o mês seguinte..!!

              Acho muito mais facil.. mas para isto precisamos saber se estes “MONSTROS” apenas criam uma nova partição ou fazem algo a mais…!!

              Abraços..!![/quote]

              Thunder, é isso mesmo veio essa porcaria deveria adicionar uma partição pro proximo mes, pra essas tabelas, se nao me engano sao 13 tabelas, sao todas para fazer um ADD partition.
              Porcaria, isso chegou aqui pra entrar em produção ai olhei isso fiquei nervoso rsrsr

              #94673
              Thiago Vilhena
              Participante

                [quote=”vieri”:18r3uxfp]Essa produre é um lixo e só serve para essa tabela,
                o cara que gastou umas 30horas pra fazer isso ai, já teria feitos todas partições até 2078 com initial extent pequeno, e não teria te dado esse trabalho.

                Nao entendo pq vc tem que colocar isso pra funcionar até segunda..
                tem chefe que é maluco.. se fosse algo do négocio…

                Crie as partições e diga que vai criar um outro mecanismo..
                para adicionar automáticamente.

                Adicionar partições é um alter table, um script dinâmico dentro de um shel script agendados na crontab gerando um .sql resolve isso..[/quote]

                kkkkkk. VIERI VEIO, fiz isso ontem a noite criei as particoes até 2015, hj estou pensando na melhor forma pra por o particionamento dessas tabelas automatizado.

                #94675
                Avatar photoRegis Araujo
                Participante

                  Opa..

                  Ta ai Thiago..

                  Agora vc edita o LESS THAN conforme sua necessidade.. eu deixei o padrão que vc havia dito.. YYYY_MM

                  Ve se lhe ajuda.. e cria um JOB ou SCHEDULER para rodar isto todos os dias 27 de cada mês..!!

                  create or replace procedure SP_NOVA_PARTICAO IS
                  v_lista_particoes DBMS_UTILITY.LNAME_ARRAY;
                  v_nova_particao varchar2(7) := to_char(SYSDATE,'YYYY_MM');

                  cursor c1 is select distinct table_name, partition_name
                  from user_tab_partitions
                  where partition_name
                  like '%'||to_char(sysdate- 10,'YYYY_MM')||'%'
                  order by table_name desc;

                  BEGIN
                  DBMS_SESSION.SET_NLS('NLS_DATE_FORMAT','''DD/MM/YYYY HH24:MI:SS''');

                  for rec in c1 LOOP
                  v_lista_particoes (c1%rowcount) := replace(rec.partition_name,to_char(sysdate-10,'YYYY_MM'),v_nova_particao);
                  declare
                  erro_part_existente EXCEPTION;
                  PRAGMA EXCEPTION_INIT(erro_part_existente, -14074);
                  BEGIN
                  EXECUTE IMMEDIATE 'ALTER TABLE '||rec.table_name||' ADD PARTITION '||v_lista_particoes (c1%rowcount)||' VALUES LESS THAN ('||to_char(add_months(sysdate,2),'YYYYMM')||') TABLESPACE ';
                  exception
                  when erro_part_existente THEN
                  -- INSERE BLOCO DE ENVIO DE E-MAIL INFORMANDO Q PARTIÇÃO JA EXISTE.
                  end;

                  end loop;
                  -- INSERE BLOCO DE ENVIO DE E-MAIL PARA CONFIRMAR A CRIAÇÃO DAS PARTIÇÕES..
                  exception
                  when others then
                  -- INSERE BLOCO DE ENVIO DE E-MAIL PARA INFORMAR ERRO NA CRIAÇÃO DAS PARTIÇÕES..
                  end SP_NOVA_PARTICAO;

                  Qualquer coisa.. posta aqui…!!

                  Abraços..

                  #94706
                  Thiago Vilhena
                  Participante

                    [quote=”Thunder_Catz”:32cye4aq]Opa..

                    Ta ai Thiago..

                    Agora vc edita o LESS THAN conforme sua necessidade.. eu deixei o padrão que vc havia dito.. YYYY_MM

                    Ve se lhe ajuda.. e cria um JOB ou SCHEDULER para rodar isto todos os dias 27 de cada mês..!!

                    create or replace procedure SP_NOVA_PARTICAO IS
                    v_lista_particoes DBMS_UTILITY.LNAME_ARRAY;
                    v_nova_particao varchar2(7) := to_char(SYSDATE,'YYYY_MM');

                    cursor c1 is select distinct table_name, partition_name
                    from user_tab_partitions
                    where partition_name
                    like '%'||to_char(sysdate- 10,'YYYY_MM')||'%'
                    order by table_name desc;

                    BEGIN
                    DBMS_SESSION.SET_NLS('NLS_DATE_FORMAT','''DD/MM/YYYY HH24:MI:SS''');

                    for rec in c1 LOOP
                    v_lista_particoes (c1%rowcount) := replace(rec.partition_name,to_char(sysdate-10,'YYYY_MM'),v_nova_particao);
                    declare
                    erro_part_existente EXCEPTION;
                    PRAGMA EXCEPTION_INIT(erro_part_existente, -14074);
                    BEGIN
                    EXECUTE IMMEDIATE 'ALTER TABLE '||rec.table_name||' ADD PARTITION '||v_lista_particoes (c1%rowcount)||' VALUES LESS THAN ('||to_char(add_months(sysdate,2),'YYYYMM')||') TABLESPACE ';
                    exception
                    when erro_part_existente THEN
                    -- INSERE BLOCO DE ENVIO DE E-MAIL INFORMANDO Q PARTIÇÃO JA EXISTE.
                    end;

                    end loop;
                    -- INSERE BLOCO DE ENVIO DE E-MAIL PARA CONFIRMAR A CRIAÇÃO DAS PARTIÇÕES..
                    exception
                    when others then
                    -- INSERE BLOCO DE ENVIO DE E-MAIL PARA INFORMAR ERRO NA CRIAÇÃO DAS PARTIÇÕES..
                    end SP_NOVA_PARTICAO;

                    Qualquer coisa.. posta aqui…!!

                    Abraços..[/quote]

                    MANUH TA COM ERRO

                    1 create or replace procedure SP_NOVA_PARTICAO IS
                    2 v_lista_particoes DBMS_UTILITY.LNAME_ARRAY;
                    3 v_nova_particao varchar2(7) := to_char(SYSDATE,'YYYY_MM');
                    4 cursor c1 is select distinct table_name, partition_name
                    5 from user_tab_partitions
                    6 where partition_name
                    7 like '%'||to_char(sysdate- 10,'YYYY_MM')||'%'
                    8 order by table_name desc;
                    9 BEGIN
                    10 DBMS_SESSION.SET_NLS('NLS_DATE_FORMAT','''DD/MM/YYYY HH24:MI:SS''');
                    11 for rec in c1 LOOP
                    12 v_lista_particoes (c1%rowcount) := replace(rec.partition_name,to_char(sysdate-10,'YYYY_MM'),v_
                    13 declare
                    14 erro_part_existente EXCEPTION;
                    15 PRAGMA EXCEPTION_INIT(erro_part_existente, -14074);
                    16 BEGIN
                    17 EXECUTE IMMEDIATE 'ALTER TABLE '||rec.table_name||' ADD PARTITION '||v_lista_particoes (c1%ro
                    18 exception
                    19 when erro_part_existente THEN
                    20 -- INSERE BLOCO DE ENVIO DE E-MAIL INFORMANDO Q PARTIÇÃO JA EXISTE.
                    21 END;
                    22 end loop;
                    23 -- INSERE BLOCO DE ENVIO DE E-MAIL PARA CONFIRMAR A CRIAÇÃO DAS PARTIÇÕES..
                    24 exception
                    25 when others then
                    26 -- INSERE BLOCO DE ENVIO DE E-MAIL PARA INFORMAR ERRO NA CRIAÇÃO DAS PARTIÇÕES..
                    27* end SP_NOVA_PARTICAO;
                    SQL> /

                    Advertência: Procedimento criado com erros de compilação.

                    SQL> SHOW ERRORS
                    Erros para PROCEDURE SP_NOVA_PARTICAO:

                    LINE/COL ERROR


                    21/1 PLS-00103: Encontrado o símbolo "END" quando um dos seguintes
                    símbolos era esperado:
                    begin case declare exit for goto if loop mod null pragma
                    raise return select update while with

                          &lt;&lt; close current delete fetch lock
                         insert open rollback savepoint set sql execute commit forall
                         merge pipe
                    

                    27/1 PLS-00103: Encontrado o símbolo "END" quando um dos seguintes
                    símbolos era esperado:

                    LINE/COL ERROR


                         begin case declare exit for goto if loop mod null pragma
                         raise return select update while with 
                    
                          &lt; </code>
                    

                    ABÇ

                  Visualizando 8 posts - 1 até 8 (de 8 do total)
                  • Você deve fazer login para responder a este tópico.