java事务调用存储过程

wang1982xuan 2011-08-09 05:26:06
我现在有好多个的存储过程要一次执行,发生异常就得回滚。如何加上事务处理?
public void insertMSCServerOFCMSCIDProcedure(Connection con, String param) {
try {
con.setAutoCommit(false);
CallableStatement cstmt = con.prepareCall("{call " + param + "}");
cstmt.setInt(1, 11);
cstmt.setInt(2, 11);
cstmt.setInt(3, 11);
cstmt.setString(4, "aaaaaaa");

cstmt.execute();
CallableStatement cstmts = con.prepareCall("{call " + param + "}");
cstmt.setInt(1, 12);
cstmt.setInt(2, 12);
cstmt.setInt(3, 12);
cstmt.setString(4, "bbbbbbb");
cstmts.execute();
con.commit();

} catch (Exception e) {
con.rollback();
e.printStackTrace();
}
}
Stored procedure 'wo_insert_MSCServerOFCMSCID' may be run only in unchained transaction mode. The 'SET CHAINED OFF' command will cause the current session to use unchained transaction mode

直接报错了。
...全文
324 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wang1982xuan 2011-08-10
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 wang1982xuan 的回复:]

一次插入一条数据,回滚也只能回滚这一次的,要把这几万条数据都回滚了。如何批量执行存储过程
[/Quote]
是sybase数据库,现在问题就是批量的执行存储过程了,不知道sybase能不能接受我传个结果集。例如:ArrayList
loveofmylife 2011-08-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wula0010 的回复:]

所谓事务,就是执行sql语句的时候,根据运行成功与否,手动来提交或者回滚,而存储过程运行完成后本身就提交了,所以程序中事务里是不能包含存储过程的,你应该重新写你的存储过程,或者在你的程序里重新写事务中的sql,不包含存储过程。你现在这样是不可能实现的..........
[/Quote]
存储过程里的事物除非是自治事物,不然可以控制外部事物,也可以被外部事物所控制
而且楼主用的额应该是sybase数据库
SET CHAINED OFF后除非使用begin tran,否则不会开启一个事务。
wang1982xuan 2011-08-10
  • 打赏
  • 举报
回复
一次插入一条数据,回滚也只能回滚这一次的,要把这几万条数据都回滚了。如何批量执行存储过程
softroad 2011-08-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wula0010 的回复:]

所谓事务,就是执行sql语句的时候,根据运行成功与否,手动来提交或者回滚,而存储过程运行完成后本身就提交了,所以程序中事务里是不能包含存储过程的,你应该重新写你的存储过程,或者在你的程序里重新写事务中的sql,不包含存储过程。你现在这样是不可能实现的..........
[/Quote]
存储过程里调用存储过程,根据存储过程返回值来回滚。
wang1982xuan 2011-08-10
  • 打赏
  • 举报
回复
谢谢,我也是测试了半天感觉既然是存储过程了,就不支持事务了。主要是现在的问题有6个存储过程要触发,插入几万条的数据量,一旦失败就要回滚,现在难道只能写方法去把已经插入的数据删除掉?有没有更好的方法。
wula0010 2011-08-09
  • 打赏
  • 举报
回复
所谓事务,就是执行sql语句的时候,根据运行成功与否,手动来提交或者回滚,而存储过程运行完成后本身就提交了,所以程序中事务里是不能包含存储过程的,你应该重新写你的存储过程,或者在你的程序里重新写事务中的sql,不包含存储过程。你现在这样是不可能实现的..........
wang1982xuan 2011-08-09
  • 打赏
  • 举报
回复
在线急等

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧