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

Procedimento armazenado EXEC com parâmetro flexível para contagem selecionada(*)... e envio de um e-mail


Sinto-me obrigado a aconselhá-lo que passar variáveis ​​para strings dinâmicas como essa deixa você aberto a injeções de SQL. Esta é uma prática ruim e geralmente desaprovada, a menos que seja muito estritamente controlada.

Dito isto...

Altere seu @MySQL de varchar para nvarchar.

Então tente mudar isso:
set @MySQL = 'select count(*) from ' [email protected] + ' where ' + @MyWhere 
set @SQL_Count = @MySQL 
set @recordCount = convert(int, @SQL_Count ) -- <<--this is the error

Para isso:
set @MySQL = 'select @recordCount=count(2) from ' + @MyTable + ' where ' + @MyWhere 
exec sp_execute @MySQL, N'@recordCount int OUTPUT', @[email protected] OUTPUT