Pular para o conteúdo

Como executar uma Function utilizando Execute Immediate

Como executar uma Function utilizando Execute Immediate

Oi meu caro amigo !
Estou tentando chamar uma function através do execute immediate, mas sem sucesso. Poderia me ajudar ?

José T.


Chamar functions através de execute immediate não é algo que costumo fazer, aliás, não lembro se algum dia precisei fazer algo do tipo. Felizmente, é algo tranquilo de se criar em PL/SQL. 🙂

Vamos começar com a nossa FUNCTION:

CREATE OR REPLACE FUNCTION f_teste
RETURN VARCHAR2 
IS
   v_retorno VARCHAR2(10) := 'OK';

BEGIN
   RETURN(v_retorno); 

END f_teste;
/

Function F_TESTE compilado

Agora vamos ao código de chamada utilizando EXECUTE IMMEDIATE. Para fazer isso, será necessário utilizar o parâmetro USING OUT para receber o resultado da execução da FUCTION.

DECLARE
   v_retorno VARCHAR2(10);

BEGIN
   EXECUTE IMMEDIATE
   'CALL f_teste() INTO :v_retorno'
   USING OUT v_retorno;

   DBMS_OUTPUT.put_line('Retorno: '|| v_retorno);

END;
/

Procedimento PL/SQL concluído com sucesso.

Retorno: OK

Existe outra maneira de chamarmos a function:

DECLARE
   v_plsql   VARCHAR2(2000);
   v_retorno VARCHAR2(10);

BEGIN
   v_plsql := 'BEGIN :v_retorno := f_teste(); END;'; 

   EXECUTE IMMEDIATE
   v_plsql USING OUT v_retorno;

   DBMS_OUTPUT.put_line('Retorno: '|| v_retorno);

END;
/

Procedimento PL/SQL concluído com sucesso.

Retorno: OK

É isso ! Espero ter ajudado !

Abraço

Quão útil foi este post ?

Clique em uma estrela para classificar o post

nota média 5 / 5. Contagem de votos: 29

Sem votos ! Seja o primeiro a classificar !

4 comentários em “Como executar uma Function utilizando Execute Immediate”

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

plugins premium WordPress