如题,有一个函数function aa(ain varchar2,b out varchar2)
想在存储过程中调用该函数,并输出该函数的输出参数b,应该如何写?

解决方案 »

  1.   

    delcare
    rin varchar2(100);
    rout varchar2(100);
    re number;--假设的你的函数返回此类型
    begin
     re := aa(rin,rout);
     dbms_output.put_line(rout);
    end;
    /
      

  2.   


    其实函数和过程的区别就是函数必须要返回一个值,而过程不能够返回(通过return)一个值。从你描述的情况看来你的该函数不建议向你现在这样创建。
    你可以很明确的传入参数就是传入参数,传出参数就是传出参数。
    function aa(ain varchar2,b invarchar2)return number;--假设返回的是number类型的数据。
    然后再过程中定义一个变量来接受该函数传回的值。
    例如:
    l_return :=aa(ain,b);
      

  3.   

    举例:
    SQL> create or replace procedure p is
      2  c varchar2(100);
      3  begin
      4  c := aa('ACCOUNTING',c);
      5  dbms_output.put_line(c);
      6  end;
      7  /
     
    Procedure created
    SQL> create or replace function aa(a in varchar2,b out varchar2)
      2  return varchar2 is
      3  begin
      4  select LOC into b from dept where dname = a;
      5  return b;
      6  end;
      7  /
     
    Function created
     
    SQL> exec p;
     
    NEW YORK
     
    PL/SQL procedure successfully completed