Необязательный параметр в SQL-сервере - PullRequest
10 голосов
/ 19 июля 2010

У меня есть пользовательская функция, которая используется во многих хранимых процедурах, которая возвращает мне некоторое значение. Если это возможно для меня, чтобы добавить новый необязательный параметр к тому же.

Если я не передаю какое-либо значение, оно должно быть нулевым, а если я передаю некоторое значение, оно должно принимать его Я не хочу идти и менять все хранимые процедуры, чтобы сделать это.

Пример кода

dbo.CalculateAverageForUser(userid int)

Могу ли я использовать dbo.CalculateAverageForUser(userid int, type NVARCHAR(10) = NULL)

Ответы [ 2 ]

12 голосов
/ 19 июля 2010

Если вы не хотите настраивать все существующие хранимые процедуры, которые ссылаются на функцию, то, я думаю, вам нужно будет создать новую функцию с кодом из существующей

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
3 голосов
/ 19 июля 2010

Я думаю, что самый простой способ - создать хранимую процедуру CalculateAverageForUserAndType (int userid, тип NVARCHAR (10)). Поместить исходный код в новую процедуру.Затем измените CalculateAverageForUser на

dbo.CalculateAverageForUser(int userid)
AS
BEGIN
    EXEC CalculateAverageForUserAndType userid, NULL

END

Таким образом, вы можете медленно перейти на новую хранимую процедуру, а старая все еще работает.

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