函数1:PROCEDURE Prc_Write_Ic01i1(Row_Bill   IN Simidwayreg%ROWTYPE,
                              Prm_Flag   IN VARCHAR2, --0正常,1不正常
                              Prm_Aae061 OUT VARCHAR2);
我在oracle另外一个prcodudre 调用这个函数:PROCEDURE Prc_Trundata_Ac10 IS
Row_Bill      simidwayreg%rowtype;
var_aae061 varchar2(20);
begin
FOR Row_Bill IN (select * from Simidwayreg) loop
    rc_write_ic01i1(row_bill,'1',var_aae061_1);
end loop;
end Prc_Trundata_Ac10 ;
调试的时候报错:PACKAGE BODY SEDSZ.PKG_A_TRUNDATA 编译错误错误:PLS-00306: 调用 'PRC_WRITE_IC01I1' 时参数个数或类型错误
行:4831
文本:prc_write_ic01i1(row_bill,'1',var_aae061_1);错误:PL/SQL: Statement ignored
行:4831
文本:prc_write_ic01i1(row_bill,'1',var_aae061_1);
如果不加入这个调用就没有错误。这个应该怎么调用呢?

解决方案 »

  1.   

    PROCEDURE Prc_Trundata_Ac10 IS
    Row_Bill      simidwayreg%rowtype;
    var_aae061 varchar2(20);中定义的是这样的,写错了
    PROCEDURE Prc_Trundata_Ac10 IS
    Row_Bill      simidwayreg%rowtype;
    var_aae061_1 varchar2(20);
      

  2.   

    你在sp中的调用变量是:var_aae061_1-------rc_write_ic01i1(row_bill,'1',var_aae061_1);而你定义的变量是var_aae061 varchar2(20);
    rc_write_ic01i1(row_bill,'1',var_aae061_1);
    改为
    rc_write_ic01i1(row_bill,'1',var_aae061);
      

  3.   

    楼上说的问题已经更正过了,
    但是这个不是关键,关键是 Row_Bill   IN Simidwayreg%ROWTYPE
    这个参数传递值的问题。
      

  4.   

    Row_Bill      simidwayreg%rowtype;FOR Row_Bill IN (select * from Simidwayreg) loop隐式游标,不要声明,既然声明了,就用显示fetch into吧
      

  5.   

    还是没有找到答案啊,没有办法了,只有定义一个全局的表的Record的type了。