Я провел некоторое тестирование на своем собственном SQL Server, и кажется, что параметризованные запросы вызывают проблемы при создании представлений. Удаление тегов CFQUERYPARAM должно исправить проблему. Лучше всего использовать CFQUERYPARAM со стандартным оператором select, но в этом случае вы передаете SQL, который будет выполняться при каждом обращении к представлению, поэтому параметризация не может быть передана в представление.
Вот пара примеров, использующих ту же концепцию, но таблицы из одной из моих собственных баз данных.
Следующее выдает ошибку Incorrect syntax near the keyword 'view'
:
<cfset id="x" />
<cfquery>
create view #id#_view as
select * from AdminUser
where admID = <cfqueryparam cfsqltype="cf_sql_varchar" value="#id#" />
</cfquery>
Отлично работает следующее:
<cfset id="y" />
<cfquery>
create view #id#_view as
select * from AdminUser
where admID = '#id#'
</cfquery>
Если кто-то может найти ссылку на SQL Server, которая подробно объясняет это, не стесняйтесь редактировать этот ответ со ссылкой.
Я также хотел бы отметить, что в зависимости от значения идентификатора вы можете заключить имя представления в квадратные скобки. Если идентификатор начинается с цифры, оператор не будет работать как есть, но включение этого в оператор в скобках будет охватывать эти ситуации (просто обязательно используйте обозначение в скобках при запросе представления). Пример: create view [#id#_view]