Ir para conteúdo
Fórum Script Brasil
  • 0

Partitions


Danzera

Pergunta

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.

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 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

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...