你好,还是请教关于db.exec(icallback) 调用oracle 存储过程事务问题

gotoitcn 发布于 2016/02/04 20:39
阅读 166
收藏 0

@JFinal 你好,想跟你请教个问题:请教关于db.exec(icallback) 调用oracle 存储过程事务问题

我现在的代码如下:

public AcctQuery queryPersonAcctBalance(final AcctQuery query) {
for (final Query _q : query.getList()) {
Db.use(DbKit.MAIN_CONFIG_NAME).execute(new ICallback() {
@Override
public Object call(Connection conn) throws SQLException {
// TODO Auto-generated method stub
CallableStatement stmt=null;

stmt = conn
.prepareCall("{ ?=call HQ_TPQRY.GETLOCKBAL(?,?,?,?,?,?,?) }");

stmt.registerOutParameter(1, Types.FLOAT);//result
stmt.setString(2, _q.getPol_no());//pol_no
stmt.setInt(3, _q.getInsu_seq());//insu_seq
stmt.setString(4, "");//v_productid 不传,用不上
stmt.setString(5, _q.getCerti_code());//certicode
stmt.registerOutParameter(6,Types.FLOAT);
stmt.registerOutParameter(7,Types.VARCHAR);
stmt.registerOutParameter(8,Types.VARCHAR);
stmt.execute();
// Double result = stmt.getDouble(1);//result
Double bal = stmt.getDouble(6);//bal
String rspcod = stmt.getString(7);//rspcod
String rspmsg = stmt.getString(8);//rspmsg
if (SUCCESS.equals(rspcod)) {//成功
_q.setPer_account(bal);
_q.setIs_success(Constant.IS_SUCCESS_1);//处理结果(1成功/0失败)
}else {//失败
_q.setIs_success(Constant.IS_SUCCESS_0);
_q.setError_desc(rspmsg);

}
return _q;
}
});
}
return query;
}

请问如何控制在本次大循环内,一个批次提交,或者回滚。

加载中
0
JFinal
JFinal
  仿照 com.jfinal.plugin.activerecord.tx.Tx.java 这个事务拦截器的做法,用 connection 手动控制提交与回滚即可。
0
JFinal
JFinal
  重点在于 connection.setAutoCommit(false),conn.rollback(),conn.commit();
0
g
gotoitcn
搞定,谢谢大拿
返回顶部
顶部