2011-02-26 21 views
22

Ho creato una funzione in oracle che inserisce record in tabelle specifiche e restituisce un output in base a ciò che si verifica all'interno della funzione. ad esempio, (numero di ritorno ins_rec)esecuzione di una funzione in sql plus

Come chiamare questa funzione e vedo la sua uscita in SQL più

risposta

10

Una possibilità potrebbe essere:

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

'seleziona myfunc (myargs) da doppio;' ha funzionato per me. Ho avuto problemi con la versione 'delcare'. – claptimes

+0

Ho una funzione che chiama una procedura. Se utilizzo questo metodo per chiamare la funzione, ottengo un'eccezione di scrittura DML. Se utilizzo la chiamata "exec dbms_output ....", funziona senza errori – user1747935

+2

Non è possibile utilizzare una funzione che _modifica i dati_ in un'istruzione 'select'. – GriffeyDog

3

Come già detto un'altra risposta, chiama select myfunc(:y) from dual;, ma potresti trovare dichiarare e impostare una variabile in sqlpl noi un po 'complicati:

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; 
Problemi correlati