Du har en blanding af SQL og dynamisk SQL i din forespørgsel mod information_schema
. Også QUOTENAME
er ikke nødvendig i where-klausulen og vil faktisk overhovedet forhindre et match, da SQL Server gemmer column_name
, ikke [column_name]
, i metadataene. Til sidst vil jeg ændre det til sys.columns
da dette er måden vi burde udlede metadata i SQL Server
. Prøv:
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, '');