NB:Veja A maldição e bênçãos do SQL dinâmico - Lidando com nomes dinâmicos de tabelas e colunas
Você ainda deve usar sql parametrizado e usar
exec sp_executesql
(que recebe parâmetros). Use também QUOTENAME
em torno dos nomes dos objetos em vez de concatenar os colchetes você mesmo. 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;