gpt4 book ai didi

java - net.sourceforge.jtds.jdbc.Driver 中的 setAutoCommit() 是否存在 "set chained"的错误?

转载 作者:行者123 更新时间:2023-11-30 04:45:53 28 4
gpt4 key购买 nike

我对 set chained 有一些困惑setAutoCommit()中的声明net.sourceforge.jtds.jdbc.Driver中的方法

source code说:

2161  if (serverType == Driver.SYBASE) {
2162 if (autoCommit) {
2163 sql.append("SET CHAINED OFF");
2164 } else {
2165 sql.append("SET CHAINED ON");
2166 }

但是,不应该向后,并且对于 autoCommit==false 来说,链接应该关闭吗?

<小时/>

我遇到这个问题的原因如下:

我正在编写一个 Java 应用程序,它需要执行一些复杂的 SQL,并在其中任何一个失败时回滚所有 SQL:

  • 使用 net.sourceforge.jtds.jdbc.Driver 打开 Sybase 连接

  • 调用setAutoCommit(false)

  • 执行 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.

最佳答案

我遇到了几乎相同的问题,并通过运行以下 SQL 解决了它。希望对您有帮助。

sp_procxmode your_stored_Procedure, 'anymode'

在您的情况下your_stored_Procedure = MySP1那么您应该运行以下代码:

 sp_procxmode MySP1, 'anymode'

关于java - net.sourceforge.jtds.jdbc.Driver 中的 setAutoCommit() 是否存在 "set chained"的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10964365/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com