Masz mieszankę SQL i dynamicznego SQL w swoim zapytaniu względem information_schema
. Również QUOTENAME
nie jest konieczne w klauzuli where i faktycznie uniemożliwi dopasowanie, ponieważ SQL Server przechowuje column_name
, a nie [column_name]
, w metadanych. Na koniec zmienię go na sys.columns
ponieważ w ten sposób powinniśmy wyprowadzać metadane w SQL Server
. Wypróbuj:
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, '');