Имате комбинация от SQL и динамичен SQL във вашата заявка срещу information_schema
. Също QUOTENAME
не е необходимо в клаузата where и всъщност изобщо ще предотврати съвпадение, тъй като SQL Server съхранява column_name
, а не [column_name]
, в метаданните. Накрая ще го променя на sys.columns
тъй като това е начинът трябва да извличаме метаданни в SQL Server
. Опитайте:
SELECT @colnames += ',' + name
FROM Prod.sys.columns
WHERE OBJECT_NAME([object_id]) = @objname
AND name <> CASE WHEN @objname = 'TableXx' THEN 'ExcludeCol1' ELSE '' END
AND name <> CASE WHEN @objname = 'TableYy' THEN 'ExcludeCol2' ELSE '' END;
SET @colnames = STUFF(@colnames, 1, 1, '');