2012-03-21 30 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?)代替,其中可以具有空值。

這不是很清楚其中你正在做這些,但沒有必要使用魔術值來表示無效。