Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Prosedur tersimpan EXEC dengan parameter fleksibel untuk jumlah pilihan(*)... dan mengirim eMail

Saya merasa berkewajiban untuk memberi tahu Anda bahwa meneruskan variabel ke string dinamis seperti ini membuat Anda terbuka untuk injeksi SQL. Ini adalah praktik yang buruk, dan umumnya tidak disukai kecuali dikontrol dengan sangat ketat.

Yang mengatakan...

Ubah @MySQL Anda dari varchar menjadi nvarchar.

Kemudian coba ubah ini:

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

Untuk ini:

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. sql query nilai xml mengembalikan NULL

  2. Bagaimana cara mendapatkan jumlah baris yang disisipkan oleh suatu transaksi

  3. Buat pemicu setelah disisipkan

  4. Aplikasi C# multi-threading dengan panggilan database SQL Server

  5. Masukkan ke dalam kueri tabel sementara