sql >> Database teknologi >  >> RDS >> Sqlserver

sql-opdatering med dynamiske kolonnenavne

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, '');



  1. Opret en DML Trigger i SQL Server

  2. Adgang nægtet; du har brug for (mindst én af) SUPER-rettighederne til denne handling

  3. sql-forespørgsel for at returnere forskelle mellem to tabeller

  4. ODAC ser ud til at cache tabelskema?