3

(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()

4

1 に答える 1

1

バージョン管理の競合であることが判明しました。OracleDB 11.2.0.3にアップグレードしたところ、期待どおりに動作し始めました。

于 2012-07-29T00:37:04.113 に答える