Du har en blandning av SQL och dynamisk SQL i din fråga mot information_schema
. Även QUOTENAME
är inte nödvändigt i where-satsen och kommer faktiskt att förhindra en matchning alls, eftersom SQL Server lagrar column_name
, inte [column_name]
, i metadata. Slutligen kommer jag att ändra det till sys.columns
eftersom det är så bör vi härleda metadata i SQL Server
. Försök:
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, '');