Você tem uma mistura de SQL e SQL dinâmico em sua consulta em
information_schema
. Também QUOTENAME
não é necessário na cláusula where e, na verdade, impedirá uma correspondência, pois o SQL Server armazena column_name
, não [column_name]
, nos metadados. Por fim, vou alterá-lo para sys.columns
já que esta é a maneira devemos derivar metadados no SQL Server
. Tentar: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, '');