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

Откуда: С-Петербург
Сообщений: 616
Здравствуйте.
есть у меня одна функция возвращающая таблицу
но хотелось бы аргументом ей подсунуть поле из таблицы да еще бы выражение
но ничего не выходит. только переменную удается, а этого маловато
чую что вроде должно бы это решаться но не могу нащупать синтаксис
может подскажет кто
from GetData( dateadd(day,@Day, @Date), @Date, @Date) q 
join [Doc] d on d.ID=q.DocID

or

from GetData( d.Date, @Date) q 
join [Doc] d on d.ID=q.DocID

sql2k

спасибо
29 мар 13, 11:23    [14111626]     Ответить | Цитировать Сообщить модератору
 Re: аргумент udf  [new]
invm
Member

Откуда: Москва
Сообщений: 9406
В SQL2K не выйдет.
29 мар 13, 11:30    [14111677]     Ответить | Цитировать Сообщить модератору
 Re: аргумент udf  [new]
leov
Member

Откуда: С-Петербург
Сообщений: 616
invm,а в более поздних?
в принципе могу найти
29 мар 13, 11:34    [14111709]     Ответить | Цитировать Сообщить модератору
 Re: аргумент udf  [new]
Jovanny
Member

Откуда:
Сообщений: 1195
CROSS (OUTER) APPLY не подходит?
29 мар 13, 11:40    [14111745]     Ответить | Цитировать Сообщить модератору
 Re: аргумент udf  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
leov
invm,а в более поздних?
в принципе могу найти
В более поздних - не JOIN,
а CROSS (или OUTER) APPLY
29 мар 13, 11:41    [14111750]     Ответить | Цитировать Сообщить модератору
 Re: аргумент udf  [new]
leov
Member

Откуда: С-Петербург
Сообщений: 616
iap,
не больно знаю я новый синтаксис. завис в 2000 году.
а что для sql2k совсем без вариантов чтоли?
вроде для скалярных функций проходили поля таблиц как аргументы
29 мар 13, 12:15    [14112051]     Ответить | Цитировать Сообщить модератору
 Re: аргумент udf  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
leov
iap,
а что для sql2k совсем без вариантов чтоли?
Вариант простой.
Написать функцию без этого параметра, возвращающую таблицу как бы для всех возмгожных значений параметра.
В запросе отсеять записи, не соответствующие этому параметру, в условии ON JOINа с функцией.

Другими словами, APPLY позволяет выполнить вызов функции, уже ограниченный значением параметра, равным полю из другой таблицы.
А JOIN отбрасывает лишнее уже после вызова функции без ограничения параметром.
Остаётся надеяться на оптимизатор, который не дурак, и сделает всё правильно!
29 мар 13, 12:22    [14112097]     Ответить | Цитировать Сообщить модератору
 Re: аргумент udf  [new]
leov
Member

Откуда: С-Петербург
Сообщений: 616
iap,

короче функцию переписывать.....

а так как хотелось бы то без вариантов
ну ладно, будем воевать дальше

спасибо
29 мар 13, 12:34    [14112164]     Ответить | Цитировать Сообщить модератору
 Re: аргумент udf  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
leov
iap,

короче функцию переписывать.....

а так как хотелось бы то без вариантов
ну ладно, будем воевать дальше

спасибо
Подозреваю, что и от функции просто отказаться, и всё!
Только лучше будет. Она у Вас, кстати, inline?
29 мар 13, 12:46    [14112255]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить