Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Procedura składowana EXEC z elastycznym parametrem do wybierania liczby(*)... i wysyłania wiadomości e-mail

Czuję się zobowiązany doradzić, że przekazywanie zmiennych do dynamicznych ciągów, takie jak ten, naraża cię na wstrzykiwanie SQL. Jest to zła praktyka i generalnie jest źle widziana, chyba że jest bardzo ściśle kontrolowana.

To powiedziawszy...

Zmień swój @MySQL z varchar na nvarchar.

Następnie spróbuj to zmienić:

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

Do tego:

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. niekodowane Count(*) vs tabele systemowe

  2. Jak wymusić nazwę schematu dbo?

  3. Procedura zapisana w SQL z wieloma parametrami

  4. Uzyskiwanie Hibernate i SQL Server do przyjemnej zabawy z VARCHAR i NVARCHAR

  5. Wybierz informacje z tabeli, w której wiersz ma maksymalną datę