MS SQL возможно ли сделать такое
От: Аноним  
Дата: 14.03.08 10:23
Оценка:
Добрый день.

select udf1(T1.params) as fn1
       udf2(fn1) as fn2 -- Вот такой вызов
from t_name T1
Re: MS SQL возможно ли сделать такое
От: B0rG  
Дата: 14.03.08 10:29
Оценка:
Здравствуйте, Аноним, Вы писали:

нет

только если через
select udf2(fn1) from 
(
select udf1(...) 
)


или же так
select udf1(T1.params) as fn1, 
       udf2(udf1(T1.params)) as fn2 
from t_name T1


У меня есть подозрение, что оптимайзер сообразит что к чему, но я его не проверял...
Re: MS SQL возможно ли сделать такое
От: Formidable  
Дата: 14.03.08 10:35
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Добрый день.

SELECT fn1, udf2(fn1) as fn2
  FROM (SELECT udf1(T1.params) as fn1
          FROM t_name T1) t1_fn
Re[2]: MS SQL возможно ли сделать такое
От: Аноним  
Дата: 14.03.08 10:39
Оценка:
Здравствуйте, B0rG, Вы писали:

BG>У меня есть подозрение, что оптимайзер сообразит что к чему, но я его не проверял...


А как можно увидеть, что он понял ?
Re[3]: MS SQL возможно ли сделать такое
От: B0rG  
Дата: 14.03.08 10:48
Оценка:
Здравствуйте, Аноним, Вы писали:

BG>>У меня есть подозрение, что оптимайзер сообразит что к чему, но я его не проверял...

А>А как можно увидеть, что он понял?

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

Если сподобитесь на такой эксперимент, то опубликуйте результаты — всем будет интересно
Re: MS SQL возможно ли сделать такое
От: Oleg  
Дата: 14.03.08 11:45
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Добрый день.


А>
А>select udf1(T1.params) as fn1
А>       udf2(fn1) as fn2 -- Вот такой вызов
А>from t_name T1 
А>



Если SQL2005, используйте CROSS APPLY
Re[2]: MS SQL возможно ли сделать такое
От: _d_m_  
Дата: 19.03.08 01:20
Оценка:
Здравствуйте, Oleg, Вы писали:

O>Здравствуйте, Аноним, Вы писали:


А>>Добрый день.


А>>
А>>select udf1(T1.params) as fn1
А>>       udf2(fn1) as fn2 -- Вот такой вызов
А>>from t_name T1 
А>>


O>Если SQL2005, используйте CROSS APPLY


Не тот случай. cross apply используется в предложении from.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.