V dotazu proti information_schema
máte kombinaci SQL a dynamického SQL . Také QUOTENAME
není nutné v klauzuli where a ve skutečnosti zabrání shodě, protože SQL Server ukládá column_name
, nikoli [column_name]
, v metadatech. Nakonec to změním na sys.columns
protože toto je způsob měli bychom odvozovat metadata na serveru SQL Server
. Zkuste:
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, '');