Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

atualização sql com nomes de colunas dinâmicas


Você tem uma mistura de SQL e SQL dinâmico em sua consulta em information_schema . Também QUOTENAME não é necessário na cláusula where e, na verdade, impedirá uma correspondência, pois o SQL Server armazena column_name , não [column_name] , nos metadados. Por fim, vou alterá-lo para sys.columns já que esta é a maneira devemos derivar metadados no SQL Server . Tentar:
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, '');