VC++ 调用 oracle 存储过程,有一个输入参数是clob类型。存储过程没有提交,提交由vc++控制。连续执行两次以上这个存储时,第二次会报ora-24801错误,请问如何解决?输入的clob字段是插入到一个表里面去的

解决方案 »

  1.   

    ORA-24801 illegal parameter value in OCI lob functionCause: One of the parameter values in the OCI LOB function is illegal.Action: Check every parameter in the OCI Lob function call to make sure they are 
    correct. Offsets should be greater than or equal to one.
      

  2.   

    这个我也查过,但是我的存储过程里面就是直接将clob 字段insert 到一张表里面去了。oci lob function应该是oracle自动调用的吧
      

  3.   

    改用dbms_lob包来操作LOB字段的插入更新等.
      

  4.   

    CREATE OR REPLACE  PROCEDURE 
    test_clob  (
    nRecordID0            in number,
    cClob0                in CLOB
    )
    as
    tmp_clob              clob;
    begin
      insert into tbTest(nRecordID          ,
                         cClob)
                  values(nRecordID0,
                         empty_clob());
      select cClob into tmp_clob from tbTest where nRecordID = nRecordID0 for update;
      dbms_lob.append(tmp_clob,cClob0);
    end;VC++ 连续调用第二次的时候报ORA-24801