Я делаю свои первые набеги на Доступ к Oracle из C #.Я обнаружил, что Oracle не любит, чтобы VarChar
параметры имели значение null
(C #).Я бы надеялся, что будет какое-то неявное преобразование, но я ценю разницу.
Так что мне нужно перехватить эти нулевые значения и вместо этого предоставить DBNull.Value
, конечно?Наиболее очевидным методом было использование оператора coalesce ??
:
param myParm = myObject.MyProperty ?? DBNull.Value;
За исключением того, что он не принимает значение System.DBNull
... поэтому я должен использовать:
param myParm = myObject.MyProperty ?? DBNull.Value.ToString();
... что, безусловно, совпадает с:
param myParm = myObject.MyProperty ?? String.Empty;
.., что также работает.
Но я всегда понимал, что в соответствии с правилами ANSI SQL пустая строка ("")! = Значение NULL ... но, похоже, оно в Oracle.
В любом случае, мой вопрос: каков наилучший, практический или теоретический способ обработки случая значений нулевых строк?Есть ли альтернатива, которую я не нашел?Или это просто еще одна особенность Oracle, которую мы просто принимаем?