我相信这是一个非常简单的问题,但我正在寻找一个最佳实践'回答。
我正在使用C#.Net建立对Oracle存储过程的调用。存储过程设置为接受所有NUMBER类型参数。由于Oracle允许将这些值设置为NULL,因此当前存储过程正在检查IS NOT NULL
。非常直截了当。问题是.Net代码无法将int
字段设置为DBNull.Value
,因此使用Int32.MinValue
。这种差异导致存储过程检查出现问题。我已经要求开发人员检查存储过程中的0
,但我想知道是否有更好的方法来处理这个问题?它似乎应检查NULL
和0
,因为Oracle中不存在最小值的概念。这是解决这个问题的最佳方式吗?
非常感谢!
答案 0 :(得分:1)
问题是.Net代码无法将int字段设置为DBNull.Value,因此使用Int32.MinValue。
不要那样做。请改用Nullable<int>
(又名int?
),其中可以具有空值。
你在做什么,这并不是很清楚,但是没有必要使用魔术值来代表无效。