簡體   English   中英

如果游標在EJB中引發異常,該如何處理

[英]How to handle cursor if it throws exception in EJBs

我有一個callableStatment,執行后出現以下錯誤

    try{
callableStatement.executeQuery()
}
    catch (Throwable t) {
                throw new Exception(t);

            } 
            finally {
                closeResultSet(rs);
                closeCallableStatement(callableStatement);
                closeConnection(dbConnection);

            }
javax.ejb.EJBTransactionRolledbackException: ORA-30926: unable to get a stable set of rows in the source tables

一段時間后,我收到“ Too man open cursors”的數據庫錯誤

我知道該程序由於重復而引發錯誤,我想知道為什么游標沒有關閉,因為似乎塊最終無法滿足我的需要,並且關閉它們的正確方法是什么

executeQuery()的返回類型是尚未指定的ResultSet。 嘗試給它

ResultSet rst = callableStatement.executeQuery();

希望能有所幫助。 :)

我認為您正在執行合並查詢,並且返回了1個以上的行ID。 這就是該例外的原因。 同樣,當返回第一個重復行時,本身也會引發異常。 在執行查詢之前,您正在嘗試關閉它。 這應該是游標無法正確關閉的原因。 嘗試在查詢中添加一個獨特的關鍵字以避免重復。 例如:合並到table_1中(在table_1 a,table_2 b,table_3 c WHERE中使用SELECT(選擇不同的ta.ROWID row_id))src ON(a.ROWID = src.row_id)匹配時;由於涉及回滾,因此在系統異常。 並且應用程序異常不會回滾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM