2011-02-26 33 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;