执行下面一段语句时
declare
 v_num number;
variable a number; 
begin
select i into v_num from test where i=mp(1,1,:a); 
dbms_output.put_line(v_num); 
end;
--出现下面的错误
第 3 行出现错误:
ORA-06550: 第 3 行, 第 12 列:
PLS-00103: 出现符号 "NUMBER"在需要下列之一时:
:= . ( @ % ; not null
range default character
符号 ":=" 被替换为 "NUMBER" 后继续。
---------------------------------------
mp是一个存储过程,代码如下:
create or replace procedure mp(a1 in number,a2 in number,a3 out number) 
as begin 
a3:=a1+a2; 
end mp; 
请问函数如何能调用到过程的返回值呢

解决方案 »

  1.   

    declare
     v_num number;
    variable a number; 
    v_a number;
    begin
    select i into v_num from test where i=mp(1,1,v_a); 
    :a := v_a;
    dbms_output.put_line(v_num); 
    end;
      

  2.   

    按照1楼所说,改为函数
    create or replace function vp(a1 in number,a2 in number) 
    return number
    is
    a3 number;
    begin 
    a3:=a1+a2;
    return a3; 
    end vp; 
    调用时执行正确,不过我如果想从过程调用该如何操作呢(因为mp是从过程中截取的一段代码)
      

  3.   

    declare
     v_num number;
     a number; 
    begin
     mp(1,1,a);
     select i into v_num from test where i=a;
     dbms_output.put_line(v_num);
    end;
    /
      

  4.   

    declare
     v_num number;
     a number; 
    begin
      mp(1,1,a);
      select a into v_num from dual where a = 2; 
      dbms_output.put_line(v_num); 
    end;
      

  5.   

    variable是在sqlplus中定义绑定变量时使用
      

  6.   

    请问函数如何能调用到过程的返回值呢 ?--------------------procedure 是没有返回值得,把它改称function即可