Pular para o conteúdo
Visualizando 4 posts - 1 até 4 (de 4 do total)
  • Autor
    Posts
  • #96362
    Muca
    Participante

      Srs,
      Depois de algum tempo, to aqui pedindo a ajuda de vocês novamente!

      A situação é a seguinte:

      Tenho uma função no meu banco que executa um INSERT e um UPDATE dentro dela, sendo assim, não posso chamar esta função utilizando um select (select package_name.function_name () from dual;)
      certo?! pois causa o erro:
      ORA-14551: cannot perform a DML operation inside a query

      Devo então chamar esta função desta forma:

      declare
      result number;
      begin
      result := package_name.function_name ();
      end;

      é isso?!?! ou existe outra maneira?!

      o problema de utilizar a segunda opção é que estou utilizando um objeto TQuery na minha aplicação, e isso esta me gerando erros!

      A duvida principal é se existe uma outra maneira de chamar a função!

      Obrigado !!!

      Muca

      #96367
      Ishii
      Participante

        Olá,

        Qual o conteúdo da função? Aparentemente ela está fazendo alguma modificação (update,insert ou delete) em algum dado da base. E por isso ORA-14551: cannot perform a DML operation inside a query…

        Se for isso mesmo, deveria executar mesmo o Bloco PL ou executar a procedure diretamente (função é só uma procedure que retorna valor em queries….)

        []s Ishii

        #96368
        Muca
        Participante

          Exato Ishii,

          a função faz um INSERT e um UPDATE como falei antes, e exatamente por isso não posso chamar atraves de um Select, porém desconheço outra forma de executar esta função, sem ser por um SELECT ou pelo BLOCO PL, e pelo BLOCO PL, estou tendo problemas em executar dentro da minha aplicação, atraves de uma TQuery (C++).

          Voce falou em executar a procedure diretamente, como seria isso?!?!

          Obrigado pela resposta!

          []s

          Muca

          #96375
          Muca
          Participante

            Srs,

            Problema resolvido…
            Consegui executar dentro de um TQuery o BLOCO PL:

            declare
            result number;
            begin
            result := package_name.function_name ();
            end;

            Obrigado pela ajuda!

            []s
            Muca

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