2011-02-26 72 views
22

我在oracle中創建了一個函數,它在特定的表中插入記錄,並根據函數中發生的內容返回輸出。如(ins_rec回數)在sql中執行函數加

如何調用該函數並請參閱SQL輸出加

回答

10

一種選擇是:

SET SERVEROUTPUT ON 

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

或者:

select myfunc(myargs) from dual; 
+1

'select myfunc(myargs)from dual;'爲我工作。我有'delcare'版本的問題。 – claptimes

+0

我有一個調用過程的函數。如果我使用這個方法來調用函數,我會得到一個DML寫入異常。如果我使用「exec dbms_output ....」調用,它可以正常工作 – user1747935

+2

您不能在'select'語句中使用_modifies data_的函數。 – GriffeyDog

3

正如另一個答案已經說過,請致電select myfunc(:y) from dual;,但您可能會發現在sqlpl中聲明並設置一個變量我們有點棘手:

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;