当前位置: 首页 > 工具软件 > unchained > 使用案例 >

java使用SSM框架连接sybase数据库,解决调用存储过程报错Stored procedure 'xxx' may be run only in unchained问题

杨和蔼
2023-12-01

今天在开发过程中,想用SSM框架调用sybase数据库的存储过程时,报错提示Stored procedure 'xxx' may be run only in unchained transaction mode. The 'SET CHAINED OFF' command will cause the current session to use unchained transaction mode.

上网查了资料,发现这是由于sybase数据库的存储过程事务模式限制导致的,事务模式分为链式和非链式,默认情况下是非链式。我的理解是,当程序调用sybase的存储过程时,事务模式不对导致程序无法执行。

我的解决方法是在存储过程的开头写“SET CHAINED OFF”,在结束写“SET CHAINED ON”,最后加一句“sp_procxmode 'xxx','anymode';”

create procedure xxx 
	/*参数*/
as
begin
	SET CHAINED OFF
    ...
    ...
    ...
	SET CHAINED ON
end;
sp_procxmode 'xxx','anymode';

我测试过,以上描述的三处都要加上,缺一个都会报错。

以上是我对该问题的解决办法,如有哪里不对欢迎指教。

资料参考自:

1. sp_procxmode « 参考手册:过程 « Sybase数据库技术

2. sybase SET CHAINED OFF与SET CHAINED ON两种事务模式有什么区别(转)

 类似资料: