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

Откуда:
Сообщений: 91
SQL 2000. Описываю функцию CREATE FUNCTION ZsFunc_AdresByIdDom (@IdDom Int =0) ....
а при вызове SELECT dbo.ZsFunc_AdresByIdDom() as Adres FROM ....
дает ошибку "An insufficient number of arguments were supplied for the procedure or function dbo.ZsFunc_AdresByIdDom".
В чем причина?
3 дек 09, 13:11    [8013704]     Ответить | Цитировать Сообщить модератору
 Re: Не работает Default при вызове функции  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
автор
В чем причина?


В том, что Вы не дочитали до конца раздел про параметры функций поумолчанию.

When a parameter of the function has a default value, the keyword DEFAULT must be specified when the function is called to retrieve the default value. This behavior is different from using parameters with default values in stored procedures in which omitting the parameter also implies the default value.
3 дек 09, 13:13    [8013728]     Ответить | Цитировать Сообщить модератору
 Re: Не работает Default при вызове функции  [new]
Glory
Member

Откуда:
Сообщений: 104760
zsv
SQL 2000. Описываю функцию CREATE FUNCTION ZsFunc_AdresByIdDom (@IdDom Int =0) ....
а при вызове SELECT dbo.ZsFunc_AdresByIdDom() as Adres FROM ....
дает ошибку "An insufficient number of arguments were supplied for the procedure or function dbo.ZsFunc_AdresByIdDom".
В чем причина?

В отсутствии ключевого слова default при вызове функции
3 дек 09, 13:14    [8013729]     Ответить | Цитировать Сообщить модератору
 Re: Не работает Default при вызове функции  [new]
zsv
Member

Откуда:
Сообщений: 91
спасибо
3 дек 09, 14:09    [8014268]     Ответить | Цитировать Сообщить модератору
 Re: Не работает Default при вызове функции  [new]
RESEARCH
Member

Откуда:
Сообщений: 186
Ребята у меня аналогичная проблема

ALTER   FUNCTION [dbo].[NAM] (@CHTO VARCHAR(30), @NONAM VARCHAR(30)='НЕТ НАИМЕНОВАНИЯ')
RETURNS VARCHAR(50)
BEGIN

RETURN ISNULL (
				 ISNULL (	COALESCE  (
										(SELECT TOP 1 NAME  FROM WHAT   WHERE CHTO=@CHTO),
										(SELECT TOP 1 NAMAT FROM NOMCEN WHERE KODM=@CHTO)	) ,

							(SELECT TOP 1 NAMEIZ FROM IZDEL WHERE OBOZIZ=@CHTO)				),

				@NONAM  )

END
GO


подскажите куда вставлять default при вызове что то не пойму

select dbo.nam ('f')
4 дек 09, 20:11    [8022447]     Ответить | Цитировать Сообщить модератору
 Re: Не работает Default при вызове функции  [new]
iljy
Member

Откуда:
Сообщений: 8711
RESEARCH,

select dbo.nam ('f',default)
BOL

Если параметр функции имеет значение по умолчанию, то для него должно быть указано ключевое слово DEFAULT для получения функцией значения по умолчанию. Применение ключевого слова DEFAULT следует отличать от использования аргументов со значениями по умолчанию в хранимых процедурах, когда неуказанный аргумент неявно принимает значение по умолчанию.
4 дек 09, 20:17    [8022463]     Ответить | Цитировать Сообщить модератору
 Re: Не работает Default при вызове функции  [new]
RESEARCH
Member

Откуда:
Сообщений: 186
все ясно, спасибо

это ж мне половину вызывов придется переделывать, хотел съэкономить - не получится
4 дек 09, 21:19    [8022604]     Ответить | Цитировать Сообщить модератору
 Re: Не работает Default при вызове функции  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
RESEARCH
все ясно, спасибо

это ж мне половину вызывов придется переделывать, хотел съэкономить - не получится

зачем переделывать?
сделать вторую ф-кцию, blah-blah-blahEX
первуюс (с одним параметром) сделать как обёртку над вызовом второй.
А непосредственно вторую вызвать только там, где это таки надо.
Конечно, получается лишняя вложенность, но всё-таки.
4 дек 09, 21:26    [8022617]     Ответить | Цитировать Сообщить модератору
 Re: Не работает Default при вызове функции  [new]
RESEARCH
Member

Откуда:
Сообщений: 186
то есть фактически сделать просто дубль функцию с праметром по умолчанию
7 дек 09, 14:19    [8028837]     Ответить | Цитировать Сообщить модератору
 Re: Не работает Default при вызове функции  [new]
Glory
Member

Откуда:
Сообщений: 104760
RESEARCH
то есть фактически сделать просто дубль функцию с праметром по умолчанию

Не дубль, а обертку для вызова
7 дек 09, 14:44    [8029305]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить