1.no parm
  exec procedure_name; -
2.in,out parms:
SOL>var i_out number; --out parm
sql>declare
      i_in integer := 1; -- in parm
    begin
      exec procedure_name(i_in,:i_out);
    end;
    /sql>print i_out

解决方案 »

  1.   

    用Call语句,不过,这个语句只能在SQL语句中用,不能在PL/SQL语句中用,如果要在PL/SQL中用,就的用动态SQL,如execute immediate "call packagename.procedure(a,b,c)"
    希望能对你有帮助。
      

  2.   

    jakarta(长风大侠)
    我写的是过程,应该怎么调用呢?
    谢谢!
      

  3.   

    除了jakarta(长风大侠)
    的方法,还有
    sql>variable  mypara1 varchar2(20) :='in para';
    sql>variable  mypara2 number
    sql>exec myprocedure(mypara1,:mypara2);
      

  4.   

    单步调试过程,得用第三方软件,如pl/sql developer
      

  5.   


    谢谢大家.
    但是因为我没有其他的软件工具,
    所以在SQL/PLUS里面执行,
    但是每次我写了类似jakarta(长风大侠)的方法,就是用了BEGIN,END
    就不对了!
    为什么呢?
      

  6.   

    var i_out1 number;
    var i_out2 VARCHAR2(200);declare
        i_in integer := 1;
    begin
        exec :i_out1 := function_name(i_in,:i_out2);
    end;
    /我做的是一个函数.
      

  7.   

    var i_out1 number;
    var i_out2 VARCHAR2(200);declare
        i_in integer := 1;
    begin
        i_out1 := function_name(i_in);
    end;--function_name return i_out2;
      

  8.   

    函数是没有out参数的。
    在别的过程或应用程序中调用函数,得这么写
    select function_name(i_in) into i_out1 from dual
      

  9.   

    i_out2 不用吗?
    上面的句子出错的!
    错误信息,说i_out1没有定义.
      

  10.   

    其实在sql plus中不用写begin end;
    直接这么写
    select function_name(30) from dual;
    把进口参数写进出,用select 就可以执行函数。
      

  11.   

    可以了!
    var i_out1 number;
    var i_out2 VARCHAR2(200);declare
        i_in integer := 1;
    begin
        :i_out1 := function_name(i_in,:i_out2);
    end;
    /
    PRINT i_out2;
      

  12.   

    我怎么还没有调试过去呢
    先等一下,不过还是先谢谢 penitent(只取一瓢) 、 jakarta(长风大侠)  
      

  13.   

    首先,要确定你的函数的入、出口参数和返回值,这是几个不同的概念:FUNCTION fun_name( param1 in varchar2, param2 out varchar2) return varchar2 is 
     ...
    begin
      ...
      return param3;
    end;这时候,你在外面可以使用var i_out2 VARCHAR2(20);
    var i_out3 VARCHAR2(20);declare
        i_in1 VARCHAR2(10) := 'AAA';
    begin
        :i_out3 := fun_name(i_in,:i_out2);
    end;
    /或者
    SET SERVEROUTPUT ON 
    DECLARE
      P1  VARCHAR2(10) := 'AAA';
      P2  VARCHAR2(10);
      P3  VARCHAR2(10);
    BEGIN
      P3 := fun_name(p1,p2);
      dbms_output.put_line('p1:'||p1);
      dbms_output.put_line('p2:'||p2);
      dbms_output.put_line('p3:'||p3);
    END;
    /