请教: 关于手动"开始一个事务"的问题??
我在程序中这样开始一个事务:
ls_sql = "BEGIN TRANSACTION"
EXECUTE IMMEDIATE :ls_sql USING SQLCA; //开始一个事务
................ //多句写数据库的SQL语句
if SQLCA.SQLCode <> 0 then
messageBox ("数据库错误", "XXXX !~r~n~r~n错误代码:" + &
string (sqlca.sqlDbCode) + "~r~n详细信息:" + &
sqlca.sqlERRText, stopSign!)
rollback using sqlca;
return -1
else
commit USING SQLCA;
return 1
end if
但是发现最终没有提交 (SQLCA.SQLCode =0),也没提示任何错误,(在SQL查询分析器里可以发现没有COMMIT)
如果把 "EXECUTE IMMEDIATE :ls_sql USING SQLCA; //开始一个事务"
这句注释掉的话反而可以正确提交了
请问是什么原因? 究竟有没必要执行: EXECUTE IMMEDIATE :ls_sql USING SQLCA;
//autoCommit = false