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

今天在开发过程中,想用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两种事务模式有什么区别(转)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值