oracle的一存储过程,内有insert操作,同时还有一out型参数,现在Delphi6中用BDE方式执行该存储过程,如用ExecSQL方式执行,则out型参数可以带出,但insert操作没有执行(因为用select查询为空表,不是临时表的方式);如用open方式执行,则out型参数无法取出,但insert操作可以执行(用select查询有数据),但报错,错误提示为:"Eror Creating cursor handle".
这个问题该如何解决?我要同时能取得out型参数和表内数据!!!

解决方案 »

  1.   

    其实用你的ExecSQL中insert操作已经执行了,只是你没有Commit到数据库中,对于你的情况用EexcSql与Open差不多,
    给你一段程序供你参考:
        storedproc1.StoredProcName:='AUTO_ARCH_JOB';
        if storedproc1.Prepared=false then storedproc1.Prepare;
        storedproc1.ParamByName('v_timestr').AsString:=timestr;
        try
          storedproc1.ExecProc;
        except
           Application.MessageBox('数据库出错,请与管理员联系!',sinfo,MB_OK+MB_ICONInformation);
        end;你按上面的改一上你程序就可以了
      

  2.   

    如果在PL/SQL中直接,数据是已经提交了的,参数也可以取出来.
    但在Delphi,数据集没有提交到表中.楼上的兄弟写的方法我用过的,只能取得参数,没有数据集呀.该怎么解决???
      

  3.   

    你用storedproc1.Open吧storedproc1.ExecProc与storedproc1.Open 的区别就在于storedproc1.Open可以返回数据集,而storedproc1.ExecProc不返回数据集
      

  4.   

    可是用open方法报错啊,而且参数取不出来