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