• 0
Sign in to follow this  
Danzera

Partitions

Question

Amigos,

Tenho o seguinte código:

Procedure PartitionOperation(vTabela in varchar2, vTipo in varchar2, vMes in varchar2, vAno in varchar2) is

/* Variáveis */

v_com_in VARCHAR2(150);

v_com_fi varchar2(150);

Begin

v_com_in := 'alter table '|| vTabela;

if vTipo = 'ADD' then

v_com_fi := v_com_in || ' add partition P_' || to_char(vAno)|| '_' || lpad(to_char(vMes),2,0) || ' VALUES LESS THAN (' || to_char(add_months(to_date(lpad(to_char(vMes),2,0) || vAno,'MMYYYY'),1),'YYYY') || ',' || to_char(add_months(to_date(lpad(to_char(vMes),2,0) || vAno,'MMYYYY'),1),'MM') || ') UPDATE INDEXES';

elsif vTipo = 'DROP' then

v_com_fi := v_com_in || ' Drop PARTITION P_' || vAno || '_' || lpad(vMes,2,0) || ' UPDATE INDEXES';

elsif vTipo = 'TRUNCATE' then

v_com_fi := v_com_in || ' Truncate PARTITION P_' || vAno || '_' || lpad(vMes,2,0) || ' UPDATE INDEXES';

end if;

EXECUTE IMMEDIATE v_com_fi;

Porem está me retornando o erro (ORA-02149 - Partição não encontrado para o objeto). Esse elseif em destaque está tentando dropar um cara que não existe, gostaria de saber como faço ao invés de usar o execute immediate eu coloque uma condição caso não exista não faça o drop?

Desde já agradeço.

Share this post


Link to post
Share on other sites

2 answers to this question

Recommended Posts

  • 0

v_com_in := 'alter table '|| vTabela;

if vTipo = 'ADD' then
v_com_fi := v_com_in || ' add partition P_' || to_char(vAno)|| '_' || lpad(to_char(vMes),2,0) || ' VALUES LESS THAN (' || to_char(add_months(to_date(lpad(to_char(vMes),2,0) || vAno,'MMYYYY'),1),'YYYY') || ',' || to_char(add_months(to_date(lpad(to_char(vMes),2,0) || vAno,'MMYYYY'),1),'MM') || ') UPDATE INDEXES';
end if;

if vTipo = 'DROP' then
v_com_fi := v_com_in || ' Drop PARTITION P_' || vAno || '_' || lpad(vMes,2,0) || ' UPDATE INDEXES';
end if;

if vTipo = 'TRUNCATE' then
v_com_fi := v_com_in || ' Truncate PARTITION P_' || vAno || '_' || lpad(vMes,2,0) || ' UPDATE INDEXES';
end if;

primeiro tente fazer separadamente os ifs

abraço

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this