Pular para o conteúdo

Fóruns SQL e PL/SQL OTIMIZANDO E PONDO PRA FUNCIONADO PROCEDURE OTIMIZANDO E PONDO PRA FUNCIONADO PROCEDURE

#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..