Краткий ответ - нет - TVFs с одним утверждением могут содержать только одно утверждение.
Есть несколько альтернатив, которые вы можете попробовать.Можно было бы выполнить проверку параметров в операторе SQL, расширив предложение WHERE
, например
...
WHERE ...
AND DATEDIFF(day, @startDate, @endDate) < 31
. Это может быть не идеально по нескольким причинам - во-первых, это может привести к тому, что пользователидумать, что не существует данных, соответствующих их критериям, поскольку нет средств сообщить, почему результаты не были возвращены.Во-вторых, нет никакой гарантии, что механизм БД все равно не выполнит части данных запроса до оценки параметров.В-третьих, это может привести к кешированию плохого плана.
Если вы работаете в SQL 2008, альтернативным подходом было бы изучение ресурса сервера SQL , который предоставляет средства дляограничить пользователей или группы пользователей выполнением запросов, для которых предполагаемое время выполнения в секундах меньше заданного порогового значения.
Еще один подход заключается в том, чтобы встроить проверку некоторых параметров в листы Excel, которые пользователи используют для своих запросов., но это может быть непрактичным в зависимости от деталей вашей настройки.