› Fóruns › SQL e PL/SQL › OTIMIZANDO E PONDO PRA FUNCIONADO PROCEDURE › OTIMIZANDO E PONDO PRA FUNCIONADO PROCEDURE
[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
<< 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
< </code>
ABÇ