Необязательный параметр в SQL-сервере
У меня есть пользовательская функция, которая используется во многих хранимых процедурах, которые возвратят мне некоторое значение. Если это возможно для меня добавить новый необязательный параметр к тому же.
Если я не передаю какое-либо значение, оно должно быть нулевым, и если я передам какое-то значение, он должен его принять. Я не хочу идти и изменять все хранимые процедуры для этого.
Пример кода
dbo.CalculateAverageForUser(userid int)
Можно ли использовать dbo.CalculateAverageForUser(userid int, type NVARCHAR(10) = NULL)
Ответы
Ответ 1
Если вы не хотите корректировать все существующие хранимые процедуры, ссылающиеся на эту функцию, я думаю, вам нужно будет создать новую функцию с кодом из существующего
CREATE FUNCTION CalculateAverageForUser2
(
@userid int,
@param2 nvarchar(10) = NULL
)
RETURNS float
AS
/*Code from existing function goes here*/
Затем просто измените существующую функцию на следующую
ALTER FUNCTION CalculateAverageForUser
(
@userid int
)
RETURNS float
AS
BEGIN
RETURN dbo.CalculateAverageForUser2(@userid, DEFAULT)
END
Ответ 2
Я думаю, что самый простой способ - сделать хранимую процедуру CalculateAverageForUserAndType (int userid, введите NVARCHAR (10)). Поместите исходный код в новую процедуру. Затем измените CalculateAverageForUser на
dbo.CalculateAverageForUser(int userid)
AS
BEGIN
EXEC CalculateAverageForUserAndType userid, NULL
END
Таким образом, вы можете медленно перейти на новую хранимую процедуру, и ваш старый файл все еще работает.