Ответ 1
Нет, нет способа - создание/падение - единственный выбор.
У меня есть сложное выражение, вычисляющее значение из даты, которую я должен использовать в нескольких столбцах даты.
Могу ли я определить временную локальную функцию в моем запросе, чтобы избежать копирования и вставки этого выражения.
как:
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
, но я бы предпочел избежать его.
Нет, нет способа - создание/падение - единственный выбор.
SQL Server поддерживает анонимные блоки, помещая запрос внутри блока BEGIN/END, но я не смог найдите пример, где кто-то определил функцию внутри него. У Oracle была функциональность некоторое время...
Нет, не локально. Но вы можете создать UDF в базе данных, которая не должна фактически получать доступ к каким-либо данным для выполнения своих вычислений.
Почему бы не сделать его постоянным UDF?