Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Citations t-sql dynamiques dans la chaîne

NB :Voir The Curse and Blessings of Dynamic SQL - Dealing with Dynamic Table and Column Names

Vous devez toujours utiliser sql paramétré et utiliser exec sp_executesql (qui prend des paramètres). Utilisez également QUOTENAME autour des noms d'objets plutôt que de concaténer les crochets vous-même.

SET @SQLString = N'SELECT @CountOUT = COUNT(*) FROM ' + 
QUOTENAME(@table_name) + ' WHERE ' + 
QUOTENAME(@new_column_name) + ' = @description'

EXECUTE sp_executesql @SQLString
    ,N'@description varchar(50), @CountOUT int OUTPUT'
    ,@description = @description
    ,@CountOUT = @CountOUT OUTPUT;