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

Procédure stockée EXEC avec paramètre flexible pour select count(*)... et envoi d'un eMail

Je me sens obligé de vous informer que le passage de variables dans des chaînes dynamiques comme celle-ci vous laisse ouvert aux injections SQL. C'est une mauvaise pratique, et généralement mal vue à moins d'être très strictement contrôlée.

Cela dit...

Changez votre @MySQL de varchar à nvarchar.

Essayez ensuite de modifier ceci :

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

À ceci :

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