locked
Partitions - Como criar uma condição? RRS feed

  • 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.           
    segunda-feira, 4 de junho de 2012 19:54

Todas as Respostas

  • Danzera, acredito que tenha posta a dúvida equivocadamente neste fórum. Tratamos aqui de assuntos exclusivamente relacionados ao produto Microsoft SQL Server. Sua dúvida é sobre este produto?

    Roberson Ferreira - Database Developer
    Acesse: www.robersonferreira.com.br
    Email: contato@robersonferreira.com.br

    Se esta sugestão for útil, por favor, classifique-a como útil.
    Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    segunda-feira, 4 de junho de 2012 23:40
    Moderador