微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – ORA-08103:对象不再存在:Oracle发生此错误从MyBatis返回Refcursor

在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] 举报,一经查实,本站将立刻删除。

相关推荐