执行Oracle存储过程时处理Int32.MinValue和NULL

时间:2012-03-21 14:20:19

标签: .net oracle c#-4.0

我相信这是一个非常简单的问题,但我正在寻找一个最佳实践'回答。 我正在使用C#.Net建立对Oracle存储过程的调用。存储过程设置为接受所有NUMBER类型参数。由于Oracle允许将这些值设置为NULL,因此当前存储过程正在检查IS NOT NULL。非常直截了当。问题是.Net代码无法将int字段设置为DBNull.Value,因此使用Int32.MinValue。这种差异导致存储过程检查出现问题。我已经要求开发人员检查存储过程中的0,但我想知道是否有更好的方法来处理这个问题?它似乎应检查NULL0,因为Oracle中不存在最小值的概念。这是解决这个问题的最佳方式吗? 非常感谢!

1 个答案:

答案 0 :(得分:1)

  

问题是.Net代码无法将int字段设置为DBNull.Value,因此使用Int32.MinValue。

不要那样做。请改用Nullable<int>(又名int?),其中可以具有空值。

你在做什么,这并不是很清楚,但是没有必要使用魔术值来代表无效。