Запрос, сгенерированный @Collist
, не является допустимым SQL и не может быть выполнен с использованием sp_executesql
. Вам не хватает SELECT
, а также FROM
Изменить егокак показано ниже.
declare @collist nvarchar(max)
SET @Collist = 'SELECT ' + STUFF((SELECT ',[' + COLUMN_NAME + ']' FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'Sales'
AND COLUMN_NAME NOT IN ('User_1','User_2','User_3','User_4')
FOR XML PATH('')),1,1,'') + ' FROM Sales'
EXECUTE sp_executesql @collist
Одно наблюдение, вместо использования [' + COLUMN_NAME + ']'
вы можете использовать QUOTENAME(COLUMN_NAME)
Используя QUOTENAME
, ваш запрос должен выглядеть следующим образом.
declare @collist nvarchar(max)
SET @Collist = 'SELECT ' + STUFF((SELECT ',' + QUOTENAME(COLUMN_NAME) + '' FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'Sales'
AND COLUMN_NAME NOT IN ('User_1','User_2','User_3','User_4')
FOR XML PATH('')),1,1,'') + 'FROM [Sales]'
EXECUTE sp_executesql @collist