Pular para o conteúdo
Visualizando 7 posts - 1 até 7 (de 7 do total)
  • Autor
    Posts
  • #96735
    augustoca
    Participante

      Bom dia pessoal,

      É possível adicionar uma function antes de minha query, e dentro da query chamar esta function:

      ex:

      FUNCTION fnivelSubGrupo(x,y,z)
      . . .
      END fnivelSubGrupo;

      SELECT fnivelSubGrupo(1,2,1) TABLELA.TESTE
      FROM TABELA

      #96737
      Ishii
      Participante

        Olá,

        A função precisaria ser criada ANTES de ser utilizada no select. Porém você poderia usar o select da função na query original…

        []s Ishii

        #96738
        augustoca
        Participante

          [quote=”Ishii”:1za9z2ml]Olá,

          A função precisaria ser criada ANTES de ser utilizada no select. Porém você poderia usar o select da função na query original…

          []s Ishii[/quote]

          Certo, do jeito que fiz ali seria impossível então?

          É uma função específica para o meu caso. Eu não encontrei nenhuma maneira de jogar a query da function junto a query original, levando em conta que a minha function vai ser executada várias vezes.

          #96739
          Ishii
          Participante

            Olá,

            Veja, você terá que criar a Function (Stored Procedure que retorna valor em queries)


            create or replace function.....
            begin...
            end function....

            Então poderá utilizar essa function nas suas queries…

            []s Ishii

            #96740
            augustoca
            Participante

              [quote=”Ishii”:ox77jopy]Olá,

              Veja, você terá que criar a Function (Stored Procedure que retorna valor em queries)


              create or replace function.....
              begin...
              end function....

              Então poderá utilizar essa function nas suas queries…

              []s Ishii[/quote]

              Eaí,
              Então, adicionando o create or replace functio ele até compilou, só que não me trouxe nenhum resultado… a estrutura geral da minha query esta assim:

              CREATE OR REPLACE FUNCTION fnivelSubGrupo(p_codigosubgrupo IN NUMBER, p_nivel IN NUMBER) RETURN VARCHAR2 IS
              RESULT VARCHAR2(100);
              CURSOR c_subgrupo IS
              ...
              BEGIN
              OPEN c_subgrupo;
              FETCH c_subgrupo
              INTO RESULT;
              CLOSE c_subgrupo;
              RETURN(RESULT);
              END FUNCTION;

              WITH MVME
              AS
              (
              ...

              )
              

              SELECT
              fnivelSubGrupo(filtro.Ncodisgpd, '1' )SUB_PAINIVEL2
              ...
              FROM (
              SELECT
              MVME.NCODISGPD,
              FROM MVME, CFGENTI, FATSGPD, CFGPLFI
              ...
              ) FILTRO

              Quando executo só a query,m e tiro a function, ele me traz os resultados normal.

              #96741
              Ishii
              Participante

                Olá,

                Com certeza a function está errada então… sugiro rever a mesma e testá-la com alguns casos para verificar se está ok o resultado.

                []s Ishii

                #96742
                augustoca
                Participante

                  [quote=”Ishii”:1fk0kpei]Olá,

                  Com certeza a function está errada então… sugiro rever a mesma e testá-la com alguns casos para verificar se está ok o resultado.

                  []s Ishii[/quote]
                  Opa,
                  Editando oque eu disse,
                  Acho que vou ter que crisar essa função separada.

                  Agradeço a ajuda
                  Abraço

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