Работа с Int32.MinValue и NULL при выполнении хранимой процедуры Oracle - PullRequest
0 голосов
/ 21 марта 2012

Я считаю, что это довольно простой вопрос, но я ищу ответ «наилучшей практики». Я устанавливаю вызов в C # .Net для хранимой процедуры Oracle. Хранимая процедура настроена на прием всех аргументов типа NUMBER. Поскольку Oracle позволяет установить эти значения в NULL, текущая хранимая процедура проверяет IS NOT NULL. Довольно просто. Проблема в том, что .Net-код не может установить для поля int значение DBNull.Value, поэтому вместо него используется Int32.MinValue. Это несоответствие вызывает проблемы для проверок хранимых процедур. Я попросил разработчика проверить 0 в хранимой процедуре, но мне интересно, есть ли лучший способ справиться с этим? Похоже, что он должен проверять как NULL, так и 0, поскольку концепция минимального значения не существует в Oracle. Это лучший способ справиться с этим? Большое спасибо!

1 Ответ

1 голос
/ 21 марта 2012

Проблема в том, что .Net-код не может установить для поля int значение DBNull.Value, поэтому вместо него используется Int32.MinValue.

Не делай этого. Вместо этого используйте Nullable<int> (он же int?), который может иметь нулевое значение.

Не совсем понятно , где вы делаете все это, но нет необходимости использовать магические значения для представления ничтожности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...