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

EXEC lagret procedure med fleksibel parameter til at vælge antal(*)... og sende en e-mail

Jeg føler mig forpligtet til at rådgive dig om, at overførsel af variabler til dynamiske strenge som denne efterlader dig åben for SQL-injektioner. Dette er en dårlig praksis, og generelt set ilde set, medmindre det er meget strengt kontrolleret.

Når det er sagt...

Skift din @MySQL fra varchar til nvarchar.

Prøv derefter at ændre dette:

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

Til dette:

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


  1. Opdater SQL Server-statistikker ved hjælp af en databasevedligeholdelsesplan

  2. Mysql svarende til php metaphone og soundex

  3. base64 kode i MySQL

  4. opdeling af en dato/klokkeslæt kolonne i år, måned og uge