3

我正在调用一个过程(从 C# 通过 ODP.Net 和 Oracle.DataAccess.dll 4.112.3.0 到带有一些补丁的 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,它可以正常工作(除了锁定我需要的记录)。

这可能是版本冲突吗?

如何解决?

更新:我怀疑这可能是因为我试图在表加载时一次锁定多个记录。我现在正在对此进行一些额外的测试......不。不是这个。在第一次调用时执行 a yield returnon awhile (oracleDataReader.Read())会引发同样的事情。.Read()

4

1 回答 1

1

原来是版本冲突。我升级到 OracleDB 11.2.0.3,它开始按预期工作。

于 2012-07-29T00:37:04.113 回答