这样一个问题:procedure A(c in,a out,b out)
在另外一个procedure B 中调用 A,plsql正常调用 A(c,a,b);
但是有朋友想这样:A(c,a)、A(c,b),或者是写个通配符
A(c,a,-),A(c,-,b) 这样就不用传递a或b了,也不接收a或b了,
不知可否,或者是oracle对in,out 参数如何规定的,
了解不是很深刻,特此请教!

解决方案 »

  1.   

    out 参数不能缺省,而且必须是一个物理变量,所以不能A(c,a)、A(c,b),或者是写个通配符 
    A(c,a,-),A(c,-,b) 这样调用.
      

  2.   

    应该可以定义默认值,procedure A(c in varchar2 default null,a out number default null,b out number default null),调用时如果前面的参数有值,可以按顺序输入,如A('aaa',123),如果只传入第三个参数,可以这样A(b=>333)
      

  3.   

    Warning: Package created with compilation errors
    Errors for PACKAGE IFSAPP.PAYMENT_REQ_DETAIL_API:
     
    LINE/COL ERROR
    -------- -----------------------------------------------
    40/4     PLS-00230: OUT 和 IN OUT 的形参不能有默认表达式
     
    SQL>