解决方案 »

  1.   

    declare
    ion_ret_code        NUMBER(4);
    ios_note            VARCHAR2(40);
    is_first_record     VARCHAR2(40);
    begin
    ion_ret_code:=2;--调用前赋值就行了
    bi_vc_check_account_main_p
    (
    'hb_20091025.dz',
    '2007-10-01 09:30:10,J2307100109301000001,01058500130,TELE,100.0',
    4000,
    ion_ret_code,
    ios_note,    
    is_first_record
    );
    dbms_output.put_line(ion_ret_code);
    dbms_output.put_line(ios_note );
    dbms_output.put_line(is_first_record);
    end;
      

  2.   


    执行后报错,一开始提示我变量太小了,我改后出来这个错误,查找了半天没出个结果,请问错误出在哪里?ORA-06550: line 7, column 1:
    PLS-00905: object UNITELE.BI_VC_CHECK_ACCOUNT_MAIN_P is invalid
    ORA-06550: line 7, column 1:
    PL/SQL: Statement ignored
      

  3.   

    重新编译一下这个procedure,注意如果是不同的用户,调用时加上存储过程的的属主用户名作为前缀
      

  4.   

    变量和OUTPUT参数定义要一致。
    VARCHAR2(40) 肯定不能匹配 VARCHAR2 默认4000的长度。
      

  5.   

    楼主你只到IN和OUT类型的参数的话,IN OUT就是包含这两种含义的一种参数格式,表示即使传入参数又是你在你所调用的存储过程中处理后的返回参数
      

  6.   

    1、IN模式:只读。在模块里面,实参的数值只能被引用,而这个参数不能被改变。
     2、OUT模式:只写。模块能够给这个参数进行赋值,但是这个参数的数值不能被引用。
     3、IN OUT模式:可读写。这个模块的数值在模块内可被引用或改变。
    在调用in out类型时,调用过程插入参数时,不能直接用常量。必须用变量。这样才能接收out返回来的值。同理:用out的也不能直接用常量。
    楼主给的错可能是返回的值的长度大于定义的长度如4楼所说
      

  7.   

    DBMS_OUTPUT.PUT_LINE('======' ||
                           L_TEST_B_COUNT);
    这样打印到你的控制台。有关存储过程,看我写的博客,5分钟就能在项目上用了,包含里面各种知识点,你看看Oracle技术_5分钟会用存储过程_存储过程简单实例(包含循环、条件、增改查、参数传入、变量赋值、java调用等)