在Oracle中调用存储过程返回refcursor时,我收到错误
2011-05-10 03:36:23 DirtiesContextTestExecutionListener [DEBUG] After test method: context [[TestContext@3a363a36 testClass = AccountActivityServiceTest,locations = arraysspath:/com/bnymellon/pwb/pfdetails/service/test/test-application-context.xml'],testInstance = com.bnymellon.pwb.pfdetails.service.test.AccountActivityServiceTest@6d2c6d2c,testMethod = getData@AccountActivityServiceTest,testException = org.springframework.jdbc.UncategorizedsqlException:
### Error updating database. Cause: java.sql.sqlException: ORA-08103: object no longer exists
### The error may involve com.bnymellon.pwb.pfdetails.persistence.AccountActivityMapper.getAccountActivityData-Inline
### The error occurred while setting parameters
### Cause: java.sql.sqlException: ORA-08103: object no longer exists
; uncategorized sqlException for sql []; sql state [72000]; error code [8103]; ORA-08103: object no longer exists
; nested exception is java.sql.sqlException: ORA-08103: object no longer exists
我正在使用Spring MyBatis整合项目. MyBatis的版本是3.0.4
我可以看到程序正在执行.日志如下.
2011-05-10 03:36:16 PreparedStatement [DEBUG] ==> Executing: {call PWMWI.PAM_TRANSACTION_PKG.ACCOUNT_ACTIVITY( ?,?,?)}
2011-05-10 03:36:16 PreparedStatement [DEBUG] ==> Parameters: 1987(Integer),5627(Integer),null,2010-01-01(Date),2010-12-31(Date),All Asset Classes(String),[All,PYR](String),(String),null
我的Mapper XMl如下:
arameterType="com.bnymellon.pwb.pfdetails.common.AccountActivityDTO"
statementType="CALLABLE">
{call PWMWI.PAM_TRANSACTION_PKG.ACCOUNT_ACTIVITY(
#{userInstance,mode=IN,jdbcType=INTEGER},#{accountGroupId,#{accountId,jdbcType=VARCHAR},#{startDate,jdbcType=DATE},#{endDate,#{assetClass,#{transactionType,#{cusipId,#{ticker,#{domainList,mode=OUT,jdbcType=CURSOR,javaType=java.sql.ResultSet,resultMap=aaDataMap})}
ecurity_NAME" property="securityName"
jdbcType="VARCHAR">TradE_DATE" property="TradeDate" jdbcType="DATE" />
我使用的是MyBatis 3.0.4版,我的Oracle驱动程序jar是ojdbc14-10.2.0.3.0.jar
过程的IN和OUT参数及其数据类型如下:
P_USER_INST NUMBER IN
P_GROUP_ID NUMBER IN
P_ENTITY_ID CHAR IN
P_ENTITY_NAME VARCHAR2 (30) IN
P_START_DATE DATE IN
P_END_DATE DATE IN
P_ASSETCLASS CHAR IN
P_TRAN_TYPE CHAR IN
P_PRIMARY_ASSET_ID VARCHAR2 IN
P_TICKER VARCHAR2 IN
P_ACCOUNT_DETAIL_CUR REF CURSOR OUT
Java中的我的DTO如下(省略了setter / getter方法)
private Integer userInstance;
private Integer accountGroupId;
private String accountId;
private Date startDate;
private Date endDate;
private String transactionType;
private String ticker;
private String cusipId;
private String assetClass;
private List
任何帮助都非常受欢迎,因为我不知道发生了什么,并且真正坚持这一点.
最佳答案
我刚刚遇到类似.net而不是Java的问题.
我的问题与基于全局临时表打开游标的事实有关.当我们从“删除行”将GTT更改为“on commit preserve rows”时,它工作正常.
看看这对你有用吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。