我们在检查“DBNull”的输出参数时遇到了问题。由Oracle存储过程或函数返回的“DBNull”值被Oracle 11g客户端/ODP.Net提供程序视为“null”字符串处理。这在使用Oracle 10g客户端时可以正常工作,因为它返回“DBNull”。由于这个原因,我们所有的“DBNull”检查都失败了。
ODP.NET在值为NULL时返回“NULL”字符串[ID 968857.1]
Modified 04-JAN-2010 Type PROBLEM Status PUBLISHED
If Not CType(cmd.Parameters("paramName")?.Value, INullable).IsNull Then
- Andrew S在Oracle发布了重大变更之后(请参见下面的评论)。您需要添加以下附加位:
if (oraParam[7] == null ||
oraParam[7].Value == DBNull.Value ||
((INullable)oraParam[7].Value).IsNull)
INullable位于Oracle.DataAccess.Types命名空间中。
或者你可以尝试...
(OracleString)result == OracleString.Null