2012-07-17 36 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,并开始按预期工作。