Anda memiliki campuran SQL dan SQL dinamis dalam kueri Anda terhadap information_schema
. Juga QUOTENAME
tidak diperlukan dalam klausa where dan benar-benar akan mencegah kecocokan sama sekali, karena SQL Server menyimpan column_name
, bukan [column_name]
, dalam metadata. Terakhir, saya akan mengubahnya menjadi sys.columns
karena ini caranya kita harus menurunkan metadata di SQL Server
. Coba:
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, '');