Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

EXEC съхранена процедура с гъвкав параметър за избор на брой (*)... и изпращане на имейл

Чувствам се длъжен да ви посъветвам, че предаването на променливи в динамични низове като този ви оставя отворени за SQL инжекции. Това е лоша практика и обикновено се приема с недоволство, освен ако не е много строго контролирано.

Това каза...

Променете своя @MySQL от varchar на nvarchar.

След това опитайте да промените това:

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

Към това:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Оценяване на настройката за мониторинг на производителността на вашата база данни

  2. LINQ към SQL:Твърде много използване на процесора:Какво се случва, когато има няколко потребители

  3. Свързване на Delphi на Linux към SQL Server

  4. Завършва ли използването на отворена SQL връзка

  5. ВЪВЕТЕ СТОЙНОСТИ, КЪДЕТО НЕ СЪЩЕСТВУВА