Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

EXEC Stored Procedure mit flexiblen Parametern für select count(*)... und Versenden einer eMail

Ich fühle mich verpflichtet, Sie darauf hinzuweisen, dass das Übergeben von Variablen in dynamische Zeichenfolgen wie diese Sie für SQL-Injektionen offen lässt. Dies ist eine schlechte Praxis und im Allgemeinen verpönt, wenn es nicht sehr streng kontrolliert wird.

Das heißt...

Ändern Sie Ihr @MySQL von varchar in nvarchar.

Versuchen Sie dann, Folgendes zu ändern:

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

Dazu:

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