困扰了一周的问题,终于得到解决。
在调用含有“insert into”、“drop”之类字样的存储过程(Procedures)时,需要先将auto commit设置成true,调用后再将之设回来。并且需要注意的是,在修改的过程中,不能直接给它赋值true,而是要将true先赋给一个变量。
具体实现代码如下。
boolean bb=true if sqlca.autocommit<>bb then sqlca.autocommit=bb disconnect using sqlca; connect using sqlca; end if DECLARE select_xq2 PROCEDURE FOR p_SGTJ_XQ2 @int_year=:li_year, @int_month=:li_month, @char_HSJBH=:gs_company using sqlca; EXECUTE select_xq2 ; if sqlca.sqlcode=-1 then messagebox("","调用存储过程失败!~r~n"+sqlca.sqlerrtext) disconnect using sqlca; sqlca.autocommit=false connect using sqlca; return -1 end if CLOSE select_xq2; disconnect using sqlca; sqlca.autocommit=not(bb) connect using sqlca;