Подтвердить что ты не робот

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

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

как:

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

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

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

4b9b3361

Ответ 1

Нет, нет способа - создание/падение - единственный выбор.

Ответ 2

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

Ответ 3

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

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