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
Obrigado, ajudou bastante!
Disponha camarada ! 🙂
Ola boa tarde precisava de uma ajuda estou com 4 perguntas da faculdade que estou com dificuldades sera que alguem poderia me ajudar
Experimente postar as suas perguntas em nosso fórum ! Para isso, acesse o link abaixo:
https://www.profissionaloracle.com.br/forums/