Pular para o conteúdo
Visualizando 11 posts - 1 até 11 (de 11 do total)
  • Autor
    Posts
  • #90802
    souza
    Participante

      Pessoal ,

      Estou criando uma function em minha base, que não dá erro nenhum na criação. Porém depois de um tempo ela fica inválida !

      Como posso verificar o que está ocorrendo ?

      Obrigado

      #90804
      diegolenhardt
      Participante

        Fica invalida mostrando que erro?

        Será que não estão modificando algum objeto que a function faz referencia?

        #90807
        souza
        Participante

          Ela simplesmente fica inválida, porém na hora que é compilada não ocorre nenhum erro. E também não estamos alterando nenhum objeto que faz referência a ela.

          Existe alguma forma de habilitar algum tipo de auditoria sobre a function ou algo parecido para tentar descobrir ?

          #90810
          diegolenhardt
          Participante

            muito estranho.. uma possibilidade é ter algum job, já que é de tempo em tempo, enfim, veja o link abaixo:

            audit trail oracle

            http://www.oracle-base.com/articles/10g … _10gR2.php

            =]

            #90811
            Manoel872
            Participante

              Bom dia,

              Seguinte caso vc altere um algum objeto que referencia ela você descompilará essa function e terá que recompilar.

              Att,

              Manoel Jr

              #90816
              souza
              Participante

                não tenho nenhum job e a função também não referencia nenhum objeto, é uma função apenas de lógica…

                Souza

                #90822
                diegolenhardt
                Participante

                  Quando descubrir posta aí pra saber o que era,

                  acho que só com a auditoria mesmo…

                  #90834
                  Rodrigo Mesquita
                  Participante

                    Souza,

                    Algum objeto é chamado dentro dela? Se este objeto chamado dentro dela ficar inválido ela tambem ficará.Se der posta ela aqui para olharmos.

                    #90836
                    rwarstat
                    Participante

                      Uma dúvida que me surgiu com essa situação.
                      Tenho uma função que chama uma procedure que por sua vez referencia uma tabela. Se a tabela for modificada a procedure ficará inválida e na conseqüência a função também, correto?

                      []´s
                      Roberto

                      #90837
                      Rodrigo Mesquita
                      Participante

                        correto!

                        #90839
                        souza
                        Participante

                          Segue a function

                          CREATE OR REPLACE FUNCTION SCHEMA.FNC_CALC_VL_TOTAL_ITEM (pc_in_5_casas_vl_total CHAR,
                          pc_in_trunc_vl_total CHAR, pn_qt_lcto NUMBER, pn_vl_lcto NUMBER, pn_vl_lcto_original NUMBER) RETURN NUMBER IS
                          ln_vl_total NUMBER := 0;
                          ln_vl_lcto_original NUMBER := 0;

                          BEGIN
                          ln_vl_lcto_original := pn_vl_lcto_original;
                          if (ln_vl_lcto_original is null or ln_vl_lcto_original = 0) then
                          ln_vl_lcto_original := pn_vl_lcto;
                          end if;
                          if (pc_in_5_casas_vl_total = ‘S’) then
                          ln_vl_total := pn_qt_lcto * ln_vl_lcto_original;
                          elsif (pc_in_5_casas_vl_total = ‘N’) then
                          ln_vl_total := pn_qt_lcto * pn_vl_lcto;
                          end if;
                          if (pc_in_trunc_vl_total = ‘S’) then
                          ln_vl_total := trunc(ln_vl_total, 2);
                          elsif (pc_in_trunc_vl_total = ‘N’) then
                          ln_vl_total := round(ln_vl_total, 2);
                          end if;
                          RETURN ln_vl_total;
                          EXCEPTION
                          WHEN OTHERS THEN
                          RAISE_APPLICATION_ERROR(-20001,
                          ‘Erro ao calcular o valor total do lançamento do item.’ ||
                          chr(10) || ‘Rotina BD: FNC_CALC_VL_TOTAL_ITEM()’ || chr(10)
                          || SQLCODE || ‘-‘ || SQLERRM);
                          END;
                          /

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