今天在开发过程中,想用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
/*参数*/
begin
SET CHAINED OFF
SET CHAINED ON
sp_procxmode 'xxx','anymode';
我测试过,以上描述的三处都要加上,缺一个都会报错。
以上是我对该问题的解决办法,如有哪里不对欢迎指教。
资料参考自:
1.
sp_procxmode « 参考手册:过程 « Sybase数据库技术
2.
sybase SET CHAINED OFF与SET CHAINED ON两种事务模式有什么区别(转)
unc
hained
transaction mode程序
调用
过程报以下错误:<code>com.sino.base.exception.DataHandleException:
Store
d
procedure
'dbo.CTZC_TRANS_DATA2EFA' may be
run
only in
unc
hained
transaction mode
解决
办法:执行以下命令
在
SSM
框架
中经常会用到
调用
数据库
中的
存储过程
、以及事务控制,下面以保存某单据为例,介绍一下:
1、Oracle中
存储过程
代码如下(主要逻辑将单据编码自动加1,并将该单据编码返回):
CREATE OR REPLACE
PROCEDURE
"UPDATE_DJBHZT" (p_GSID in varchar2, p_TBLNAME in varchar2,
1. Unable to convert string [${
use
r.createTime}] to class [
java
.util.Date] for attribute [value]:
不能识别EL表达式
解决
isELIgnored="false"
<%@ page contentType="text/html;char
set
=UTF-8" language="
java
" isEL...