Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net InitialLOBFetchSize为-1会导致空CLOB的IsDBNull返回true_.net_Oracle_Ado.net_Oracle11g_Odp.net - Fatal编程技术网

.net InitialLOBFetchSize为-1会导致空CLOB的IsDBNull返回true

.net InitialLOBFetchSize为-1会导致空CLOB的IsDBNull返回true,.net,oracle,ado.net,oracle11g,odp.net,.net,Oracle,Ado.net,Oracle11g,Odp.net,今天我找到了OracleCommand.InitialLOBFetchSize属性()。因为我使用的是NHibernate(它总是访问从DataReader返回的所有值),所以对于我的应用程序中所有新的OracleCommands,我都将其设置为-1(这在选择多个CLOB时带来了巨大的性能提升) 但后来我注意到我的应用程序中有几个新的bug。它们都有相同的源代码:OracleDataReader.IsDBNull()()对于空CLOB返回true!这是100%可复制的,将其设置回0或正值会使Is

今天我找到了
OracleCommand.InitialLOBFetchSize
属性()。因为我使用的是NHibernate(它总是访问从
DataReader
返回的所有值),所以对于我的应用程序中所有新的
OracleCommands
,我都将其设置为-1(这在选择多个CLOB时带来了巨大的性能提升)

但后来我注意到我的应用程序中有几个新的bug。它们都有相同的源代码:OracleDataReader.IsDBNull()()对于空CLOB返回true!这是100%可复制的,将其设置回0或正值会使
IsDBNull()
恢复其正确行为

有人知道如何在没有额外往返的情况下获得完整LOB的同时防止此错误吗

我注意到将
InitialLOBFetchSize
设置为正值会影响
OracleDataReader.RowSize
值,而0和-1会导致相同的
RowSize
值。将
InitialLOBFetchSize
设置为大值(一些MB)是否有任何缺点


我将ODP.NET 11.2.0.3.0(也尝试了11.2.0.2.0)与.NET 4.0和Oracle 11g Release 2服务器一起使用。

一些测试表明,对
InitialLOBFetchSize使用大值(>=1 MB)会降低性能(与0一样糟糕)


在有人找到真正的解决方案之前,我将使用一个覆盖大多数CLOB(5-10 KB)的值。

一些测试表明,对
InitialLOBFetchSize使用大值(>=1 MB)会降低性能(与0一样糟糕)


在有人找到真正的解决方案之前,我将使用一个覆盖大部分CLOB(5-10 KB)的值。

FYI:对于这个问题,有一个官方的Oracle错误条目。错误ID是14279177。我也遇到了这个问题。仅供参考:对于这个问题,有一个官方的Oracle错误条目。bug ID是14279177。我也遇到了这个。