ibatis执行sybase存储过程时报错 Stored procedure 'proc_acctquery' may be run only in unchained transaction mode
Caused by: com.sybase.jdbc3.jdbc.SybSQLException: Stored procedure 'proc_acctquery' may be run only in unchained transaction mode.
The 'SET CHAINED OFF' command will cause the current session to use unchained transaction mode.
at com.sybase.jdbc3.tds.Tds.processEed(Tds.java:2988)
at com.sybase.jdbc3.tds.Tds.nextResult(Tds.java:2292)
at com.sybase.jdbc3.jdbc.ResultGetter.nextResult(ResultGetter.java:69)
at com.sybase.jdbc3.jdbc.SybStatement.nextResult(SybStatement.java:220)
at com.sybase.jdbc3.jdbc.SybStatement.nextResult(SybStatement.java:203)
at com.sybase.jdbc3.jdbc.SybStatement.executeLoop(SybStatement.java:1868)
at com.sybase.jdbc3.jdbc.SybCallableStatement.execute(SybCallableStatement.java:157)
at org.apache.commons.dbcp.DelegatingPreparedStatement.execute(DelegatingPreparedStatement.java:168)
at sun.reflect.GeneratedMethodAccessor68.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.ibatis.common.jdbc.logging.PreparedStatementLogProxy.invoke(PreparedStatementLogProxy.java:62)
at sun.proxy.$Proxy2.execute(Unknown Source)
at com.ibatis.sqlmap.engine.execution.SqlExecutor.executeQueryProcedure(SqlExecutor.java:278)
at com.ibatis.sqlmap.engine.mapping.statement.ProcedureStatement.sqlExecuteQuery(ProcedureStatement.java:39)
at com.ibatis.sqlmap.engine.mapping.statement.MappedStatement.executeQueryWithCallback(MappedStatement.java:189)
解决方法 :在sybase数据库中执行 exec 'sp_procxmode proc_acctquery' , 'anymode'
proc_acctquery --自己编写的存储过程名
'anymode'--模式
ibatis执行sybase存储过程报错Stored procedure 'proc_acctquery' may be run only in unchained transaction mode
ibatis执行sybase存储过程时报错 Stored procedure 'proc_acctquery' may be run only in unchained transaction modeCaused by: com.sybase.jdbc3.jdbc.SybSQLException: Stored procedure 'proc_acctquery' may be
今天整合
存储
过程
的脚本时,看到如下语句:
sp_procx
mode
P_InitTaskByCond, any
mode
GO
于是查询了一下【sp_procx
mode
】 的一些简单介绍,进行记录一下:整理中
https://www.google.com.hk/search?newwindow=1&safe=strict&site=&source=hp&q=sp_...
SYBASE
SQL Server 的每一个数据库,无论是系统数据库(master,
mode
l, sybsystemprocs, tempdb),还是用户数据库,都有自己的
transaction
log,每个库都有syslogs表。Log记录用户对数据库修改的操作,所以如果不用命令清除, log会一直增长直至占满空间。清除log可用dump
transaction
命令;或者开放数据库选项t
run
c log on chkpt,数据库会每隔一段间隔自动清除log。管理好数据库log是用户操作数据库必须考虑的一面。
下面就几个方面谈谈log及其管理:
spring 事务配置
http://www.cnblogs.com/younggun/archive/2013/07/16/3193800.html
spring 自我调用失效解决方案
http://blog.csdn.net/wxwzy738/article/details/27566645
sybase
存储
过程
在事务内
执行
报
com.
sybase
.jdbc2.jdbc.SybSQLExcept
链接:http://www.360doc.com/content/12/0523/23/4152160_213259047.shtml
一、 系统数据库
安装
Sybase
数据库时自动生成的下列系统数据库:
● 主数据库master;
● 模型数据库
mode
l;
● 系统
过程
数据库sybsystemprocs;
● 临时数据库tempdb。
也可选择下列数据库:
Sybase
中默认每个DML语句是一个事务,因此,正确地处理事务和
错
误就很重要了。
EXEC sp_procx
mode
'spname', '
unchained
' 让
存储
过程
不在事务链模式中。
[code="sql"]
create
procedure
procTransationTest
@param1 int,
@param2 char(20)
declare...
Sybase
数据库
存储
过程
不能进行修改,需要先将其DROP掉后再CREATE,可以先进入原
存储
过程
中将需要修改的内容作修改后,全部复制,后将
存储
过程
删除,后再创建将内容粘贴到内容区即可。
转载于:https://blog.51cto.com/lj1987/284238...
google半天,没找到有人写者方面的,我就开个头吧。有不对的地方还请大侠们拍砖。
要点其实很简单,就是把在declareParameter时要先声明返回结果集参数,再声明input参数。
先看看程序吧:
org.apache.
ibatis
.binding是MyBatis框架中的一个包,提供了一些基础的绑定功能,比如将Mapper接口绑定到对应的Mapper XML文件中。如果出现org.apache.
ibatis
.binding
报
错
,可能是以下原因之一:
1. MyBatis依赖版本不匹配:可能是你使用的MyBatis依赖版本与其他依赖库的版本不兼容,导致org.apache.
ibatis
.binding包无法正确加载。
2. Mapper接口绑定问题:可能是你在绑定Mapper接口时出现了
错
误,比如Mapper接口中的方法名与Mapper XML文件中的id不一致,或者Mapper接口中的参数类型与Mapper XML文件中的参数类型不一致等。
3. MyBatis配置文件问题:可能是你的MyBatis配置文件中出现了
错
误,比如配置文件中的mapper节点没有正确配置,或者配置文件中的数据源配置出现了问题等。
建议你根据
报
错
信息进行排查和调试,找到具体的原因并进行修复。
ibatis执行sybase存储过程报错Stored procedure 'proc_acctquery' may be run only in unchained transaction mode
Catnapper__: