oracle11g – Oracle 11g ODP.Net提供程序的DBNull问题
我们在检查“DBNull”的输出参数时遇到问题. Oracle存储过程或函数返回的“DBNull”值被oracle 11g客户端/ ODP.Net提供程序视为“null”字符串.这适用于oracle 10g客户端,因为它返回“DBNull”.
解决方法当值为NULL时,ODP.NET返回“NULL”字符串[ID 968857.1]Modified 04-JAN-2010 Type PROBLEM Status PUBLISHED 在本文件中 适用于: 症状 原因 ODP.NET版本9.2.x,10.1.x,10.2.0.1.0都是1.x框架提供程序.通常,在从早期版本ODP迁移到较新版本的ODP时会注意到此行为,但同时从1.x提供程序切换到2.x提供程序.这是.NET框架支持的变化,而不是导致此行为的Oracle客户端版本的更改. 在将应用程序迁移到64位操作系统时,也可能会注意到此行为,因为没有1.x 64位框架. 解 作为一种解决方法,使用ODP.NET for 1.x(例如1.111.7.0而不是2.111.7.0)将导致先前的行为,但请注意1.x提供程序未在其他任何版本的框架上进行测试或支持超过1.x,并且不计划对11.1.0.7.0以后的任何版本支持1.x. 如果操作系统是64位,则需要强制应用程序在SYSWOW64子系统下运行(即32位),以便使用1.x ODP.NET. 要更正代码: 如果值是DbType,则可以检查param.Value == DbNull.Value 如果值是OracleDbType,则可以检查((INullable)param.Value).IsNull,因为Oracle Types继承了INullable接口. (编辑:PHP编程网 - 黄冈站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |