2011-02-26 14 views
22

Creé una función en Oracle que inserta registros en tablas específicas y devuelve una salida de acuerdo con lo que ocurre dentro de la función. por ejemplo (número de devolución ins_rec)ejecutando una función en sql más

Como llamar a esta función y ver su salida en SQL Plus

Respuesta

10

Una opción sería:

SET SERVEROUTPUT ON 

EXEC DBMS_OUTPUT.PUT_LINE(your_fn_name(your_fn_arguments)); 
26
declare 
    x number; 
begin 
    x := myfunc(myargs); 
end; 

alternativa:

select myfunc(myargs) from dual; 
+1

'seleccione myfunc (myargs) de dual;' trabajado para mí. Tuve problemas con la versión 'delcare'. – claptimes

+0

Tengo una función que llama a un procedimiento. Si utilizo este método para llamar a la función, obtengo una excepción de escritura DML. Si utilizo la llamada "exec dbms_output ....", funciona sin errores – user1747935

+2

No se puede usar una función que _modifique data_ en una instrucción 'select'. – GriffeyDog

3

Como ya dijiste en otra respuesta, llama al select myfunc(:y) from dual;, pero es posible que encuentres declarar y establecer una variable en sqlpl un poco complicado:

sql> var y number 

sql> begin 
    2 select 7 into :y from dual; 
    3 end; 
    4/

PL/SQL procedure successfully completed. 

sql> print :y 

     Y 
---------- 
     7 

sql> select myfunc(:y) from dual; 
Cuestiones relacionadas