Действительно ли возможно определить локальную функцию в запросе TSQL?

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

как:

create MyLocalFunc(@ADate datetime) 
returns int as
begin
  blablabla
end

select
  MyLocalFunc(col1), col2, MyLocalFunc(col3), col4, MyLocalFunc(col5)
from
  mytable

Как обходное решение, я знаю, что могу сделать a CREATE FUNCTION // DROP FUNCTION, но я предпочел бы, избегают его.

23
задан François 2 July 2010 в 19:43
поделиться

3 ответа

] Нет, нет - единственный выбор - создать / удалить.

7
ответ дан 29 November 2019 в 03:12
поделиться

SQL Server поддерживает анонимных блоков , помещая запрос (и) в блок BEGIN / END, но мне не удалось найти пример, где кто-то определил функционируют внутри него. Некоторое время у Oracle была такая функциональность ...

1
ответ дан 29 November 2019 в 03:12
поделиться

Нет, не локально. Но вы можете создать UDF в базе данных, которая не должна фактически обращаться к данным для выполнения вычислений.

Почему бы не сделать его постоянным UDF?

.
-1
ответ дан 29 November 2019 в 03:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: