2012-03-21 31 views
0

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

回答

1

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

不这样做。使用Nullable<int>(又名int?)代替,其中可以具有空值。

这不是很清楚其中你正在做这些,但没有必要使用魔术值来表示无效。