sql >> Databáze >  >> RDS >> Sqlserver

Uložená procedura EXEC s flexibilním parametrem pro select count(*)... a odeslání e-mailu

Cítím povinnost vám poradit, že předávání proměnných do dynamických řetězců, jako je tento, vás ponechává otevřené SQL injekcím. To je špatná praxe a obecně odsuzovaná, pokud není příliš přísně kontrolována.

To znamená...

Změňte svůj @MySQL z varchar na nvarchar.

Pak zkuste změnit toto:

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

K tomu:

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


  1. Proč mi Oracle DECODE dává jinou hodnotu než NVL?

  2. snadné způsoby výběru řádků ze všech tabulek

  3. Jak poslouchat nové záznamy db přes java

  4. Vzdálené operace Androidu MySQL pomocí webové služby s php