2012-07-17 30 views
3

我正在調用一個過程(從C#通過ODP.Net與Oracle.DataAccess.dll 4.112.3.0到OracleDB 11.2.0.1與一些修補程序)有一個OUT SYS_REFCURSOR(讓我們稱之爲pCursorOut)。在此過程中,我這樣做:錯誤打開一個OUT SYS_REFCURSOR FOR FOR UPDATE SKIP LOCKED

OPEN pCursorOut FOR SELECT ... FOR UPDATE SKIP LOCKED; 

我的C#代碼:

var oracleDataReader = oracleCommand.ExecuteDataReader(); 
dataTable.Load(oracleDataReader); 

調用Load()導致一個OracleException

ORA-03113:檔案結尾通信頻道

如果我刪除FOR UPDATE SKIP LOCKED,它工作正常(除了而不是鎖定記錄,我需要)。

這可能是版本衝突嗎?

這怎麼解決?

更新:我懷疑這可能是因爲我試圖鎖定一次超過一個記錄與表加載。我正在對此進行一些額外的測試...... NOPE。不是這個。在while (oracleDataReader.Read())上執行yield return會在第一個.Read()調用中引發同樣的情況。

+3

檢查服務器。可能有相應的'ORA-00600'可以幫助。 – 2012-07-17 21:05:42

回答

1

原來這是一個版本衝突。我升級到OracleDB 11.2.0.3,並開始按預期工作。