我有一些困惑与set chained
中声明setAutoCommit()
的方法net.sourceforge.jtds.jdbc.Driver
该源代码表示:
2161 if (serverType == Driver.SYBASE) {
2162 if (autoCommit) {
2163 sql.append("SET CHAINED OFF");
2164 } else {
2165 sql.append("SET CHAINED ON");
2166 }
然而, 应该不会是倒退,并链接应该关闭自动提交==假的?
我碰到这种情况的原因如下:
我正在写一个Java应用程序,它需要做一些复杂的SQL和回滚所有的它,如果任何的失败:
使用打开Sybase连接
net.sourceforge.jtds.jdbc.Driver
打电话的setAutoCommit(假)
做SQL1
调用存储过程“MySP1”
存储过程MySP1' 是不是我的控制之下
它具有
EXEC sp_procxmode 'dbo.MySP1','unchained'
做SQL2
如果SQL2失败,回滚一切(包括SQL1),否则提交。
做完这一点,我从MySP1出现以下错误:
Stored procedure 'MySP1' may be run only in unchained transaction mode. The 'SET CHAINED OFF' command will cause the current session to use unchained transaction mode.