加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

oracle11g – Oracle 11g ODP.Net提供程序的DBNull问题

发布时间:2021-03-05 18:25:14 所属栏目:站长百科 来源:网络整理
导读:我们在搜查“DBNull”的输出参数时碰着题目. Oracle存储进程或函数返回的“DBNull”值被oracle 11g客户端/ ODP.Net提供措施视为“null”字符串.这合用于oracle 10g客户端,由于它返回“DBNull”. 因此,我们全部的“DBNull”搜查都失败了 办理要领 当值为NULL

我们在搜查“DBNull”的输出参数时碰着题目. Oracle存储进程或函数返回的“DBNull”值被oracle 11g客户端/ ODP.Net提供措施视为“null”字符串.这合用于oracle 10g客户端,由于它返回“DBNull”.
因此,我们全部的“DBNull”搜查都失败了

办理要领

当值为NULL时,ODP.NET返回“NULL”字符串[ID 968857.1]

Modified 04-JAN-2010 Type PROBLEM Status PUBLISHED

在本文件中
症状
变革
缘故起因

合用于:
Oracle Data Provider for .NET – 版本:10.2.0.2.20到11.1.0.7.10
Microsoft Windows(32位)
Microsoft Windows x64(64位)

症状
从早年版本的Oracle Data Provider for .NET迁徙后,也许会产生与检索到的空值相干的举动变动.固然应用措施先前返回了一个空字符串,但此刻得到一个值为“null”的字符串.
变革
从1.x ODP.NET迁徙到2.x ODP.NET

缘故起因
该举动是因为从1.x Oracle Data Provider for .NET迁徙到2.x提供措施. 2.x ADO.NET支持提供措施返回提供措施特定范例的手段,这是从.NET 1.x到2.x的隐藏“重大变革”之一.

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接口.

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读