Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 вызов функции с дефолтным параметром  [new]
GUEST150619
Guest
Приветствую всех, не подскажет ли кто, как вот это понять:

CREATE FUNCTION fn_test_150619
(	
	@param int = 0
)
RETURNS TABLE 
AS
RETURN 
(
	SELECT @param value
)
GO

SELECT * FROM dbo.fn_test_150619()


Msg 313, Level 16, State 3, Line 1
An insufficient number of arguments were supplied for the procedure or function dbo.fn_test_150619.


В свете того, что в документации сказано:
Если по умолчанию определено значение default, то функция выполняется даже в том случае, если для данного параметра значение не указано.
19 июн 15, 11:45    [17791586]     Ответить | Цитировать Сообщить модератору
 Re: вызов функции с дефолтным параметром  [new]
Glory
Member

Откуда:
Сообщений: 104760
А строчкой ниже сказано
Если параметр функции имеет значение по умолчанию, то для него должно быть указано ключевое слово DEFAULT для получения функцией значения по умолчанию.
19 июн 15, 11:46    [17791594]     Ответить | Цитировать Сообщить модератору
 Re: вызов функции с дефолтным параметром  [new]
GUEST150619
Guest
Glory, спасибо!
19 июн 15, 11:57    [17791662]     Ответить | Цитировать Сообщить модератору
 Re: вызов функции с дефолтным параметром  [new]
GUEST150619
Guest
Вообще, конечно, непонятно, зачем тогда в MS SQL дефолтные параметры, как таковые.

Для сравнения, если нужно расширить функциональность процедуры, новые параметры можно оформить, как параметры с дефолтными значениями, и тогда старый код, вызывающий процедуру, можно будет не переписывать. Профит.

А зачем дефолтные параметры функциям - неочевидно.

Как говорил товарищ Брыль,
Зачем, зачем... А я и сам не знаю, зачем. Положено!
19 июн 15, 12:28    [17791901]     Ответить | Цитировать Сообщить модератору
 Re: вызов функции с дефолтным параметром  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31443
GUEST150619
Вообще, конечно, непонятно, зачем тогда в MS SQL дефолтные параметры, как таковые.
Что бы можно было менять значение дефолтного параметра, не маняя все вызовы.

Хотя разумеется невозможность расширить функцию - недостаток, не понимаю, зачем так сделано...
19 июн 15, 15:22    [17793317]     Ответить | Цитировать Сообщить модератору
 Re: вызов функции с дефолтным параметром  [new]
GUEST150619
Guest
alexeyvg
Хотя разумеется невозможность расширить функцию - недостаток, не понимаю, зачем так сделано...


Подозреваю, что вопрос "зачем" тут неуместен. Сроки + деньги = "Так получилось", потом оно вошло в документацию, потом разработчик уволился, ВСЁ.

Работает? Забетонируй!
19 июн 15, 17:47    [17794334]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить