Могу ли я сказать, использует ли мой сохраненный процесс значение по умолчанию или явное значение? - PullRequest
0 голосов
/ 12 марта 2012

У меня есть сохраненный процесс, который принимает несколько параметров.Одним из них является DateTime со значением по умолчанию NULL.

К сожалению, столбец, в который он будет записан, является столбцом DateTime, допускающим значение NULL.Это проблема, так как иногда параметр игнорируется при вызове хранимого процесса, но в итоге он перезаписывает действительную дату и время с нулем в таблицу назначения.

Есть ли какая-либо функция T-SQL или другой способ, которым я могуиспользовать, чтобы определить, действительно ли вызывающая сторона явно передала значение NULL или просто проигнорировала этот параметр и оставила его для установки значения по умолчанию?

Единственное, что я могу подумать об этом;

  1. Также есть флаг, говорящий о том, что пользователь хочет сохранить информацию DateTime
  2. Создание двух версийхранимой процедуры;один с параметром DateTime и значением по умолчанию, а другой полностью пропускает параметр DateTime.

Эти идеи не кажутся фантастическими, поэтому любые идеи очень ценятся.

1 Ответ

0 голосов
/ 12 марта 2012

Один из подходов к этому - изменить значение параметра по умолчанию с NULL на «магическое» значение - дату, которую ваши пользователи вряд ли введут, - которую вы затем можете проверить в теле хранимой процедуры и действовать соответственно.

Хорошим выбором магического значения будет начало или конец диапазона даты и времени (01 Jan 1753 или 31 Dec 9999), в зависимости от фактического профиля данных.

...