Могу ли я определить, использует ли мой хранимый процесс значение по умолчанию или явное значение?

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

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

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

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

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

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


person Mr Moose    schedule 12.03.2012    source источник
comment
Помимо проверки того, является ли значение вашего параметра NULL или нет - нет, не совсем так. Также не должно иметь значения, является ли значение для сохраненного процесса определенным значением по умолчанию или предоставленным значением - значение есть значение есть значение.   -  person marc_s    schedule 12.03.2012


Ответы (1)


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

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

person Ed Harper    schedule 12.03.2012