Pular para o conteúdo
  • Este tópico contém 2 respostas, 3 vozes e foi atualizado pela última vez 12 anos, 2 meses atrás por Avatar de Fábio PradoFábio Prado.
Visualizando 3 posts - 1 até 3 (de 3 do total)
  • Autor
    Posts
  • #104347
    Avatar de leo_jfleo_jf
    Participante

      Bom dia PessoALL,

      Tenho duas procedures que executam. Uma mensal e outra trimestral.
      O que diferencia as procedures é apenas as tabelas mensal e trimestral.
      Gostaria de juntar e ter apenas uma procedure.
      Exemplo:

      Se dia = 01 então

      v_tabela:= mensal;

      else
      v_tabela := trimestral:

      end if;

      select * from v_tabela;

      Tentei realizar esse comando mas gerou erro. Como sql dinamico (execute immediate…) não seria possivel pois teria que mudar a lógica toda da procedure, e a mesma é muito grande.

      Estou errando em algo? Como variável é possivel fazer isso?

      qq ajuda é bem vinda.

      forte abraços e bom fim de semana.

      #104348
      Avatar de rmanrman
      Participante

        @leo_jf

        A saída realmente é através de execute immediate.

        #104349
        Avatar de Fábio PradoFábio Prado
        Participante

          leo_jf,

          Ao invés de fazer “EXECUTE IMMEDIATE” vc tbém pode abrir um cursor dinâmico, como no exemplo abaixo que demonstro nos meus treinamentos de PL/SQL, porém , EXECUTE IMMEDIATE é mais facil de usar:

          SET SERVEROUTPUT ON
          DECLARE
          TYPE emp_rc IS REF CURSOR;
          emp_cur emp_rc;
          EMP_ROW HR.EMPLOYEES%ROWTYPE;
          v_sql VARCHAR2(50):=’SELECT * FROM HR.EMPLOYEES’;
          BEGIN
          OPEN emp_cur FOR v_sql;
          LOOP
          FETCH emp_cur INTO emp_row;
          EXIT WHEN emp_cur%NOTFOUND;
          DBMS_OUTPUT.PUT_LINE(‘O empregado ‘ || emp_row.FIRST_NAME || ‘ ‘ || emp_row.LAST_NAME || ‘ foi contratado em ‘ || TO_CHAR(emp_row.HIRE_DATE,’dd/mm/yyyy’));
          END LOOP;

          CLOSE emp_cur;
          END;

          []s

          Fábio Prado
          http://www.fabioprado.net

        Visualizando 3 posts - 1 até 3 (de 3 do total)
        • Você deve fazer login para responder a este tópico.
        plugins premium WordPress