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

Procedura memorizzata EXEC con parametro flessibile per select count(*)... e invio di una eMail

Mi sento obbligato a consigliarti che il passaggio di variabili in stringhe dinamiche come questa ti lascia aperto alle iniezioni SQL. Questa è una cattiva pratica e generalmente disapprovata a meno che non sia controllata in modo molto rigoroso.

Detto questo...

Cambia il tuo @MySQL da varchar a nvarchar.

Quindi prova a modificare questo:

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

A questo:

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