(Oracle.DataAccess.dll4.112.3.0を使用したODP.Netを介したC#からいくつかのパッチを使用したOracleDB 11.2.0.1への)プロシージャを呼び出しています(これをOUT SYS_REFCURSOR
呼び出しましょうpCursorOut
)。手順では、これを行います:
OPEN pCursorOut FOR SELECT ... FOR UPDATE SKIP LOCKED;
私のC#コード:
var oracleDataReader = oracleCommand.ExecuteDataReader();
dataTable.Load(oracleDataReader);
呼び出すLoad()
とOracleException
:
ORA-03113:通信チャネルのファイルの終わり
を削除するとFOR UPDATE SKIP LOCKED
、正しく機能します(必要なレコードをロックしないことを除いて)。
これはバージョンの競合でしょうか?
これはどのように解決できますか?
更新:これは、テーブルのロード時に一度に複数のレコードをロックしようとしていることが原因である可能性があります。私は今これについていくつかの追加のテストを行っています...いいえ。それではない。を実行すると、最初の呼び出しで同じことがスローされyield return
ます。while (oracleDataReader.Read())
.Read()