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

SQL Server menggunakan EXEC/sp_executesql atau hanya sql biasa dalam prosedur tersimpan?

Tidak ada alasan untuk menggunakan SQL dinamis di sini. Saat Anda melakukannya perlu menggunakan SQL dinamis, Anda harus mempertimbangkan sp_executesql lebih tinggi dalam preferensi daripada EXEC() . Ada berbagai alasan, termasuk:

  1. sp_executesql lebih cenderung menggunakan kembali paket kueri (lihat SQL Dinamis - EXEC(@SQL) versus EXEC SP_EXECUTESQL(@SQL) );

  2. jauh lebih mudah untuk meneruskan parameter yang sangat diketik ke sp_executesql (menggagalkan injeksi SQL lebih baik daripada menggabungkan string); dan,

  3. Anda juga bisa mendapatkan variabel dari dalam lingkup SQL dinamis kembali ke lingkup panggilan, misalnya:

Itu bukan contoh yang sangat berguna, tetapi ini adalah masalah umum saat menjalankan string dinamis. Tetapi lebih penting lagi, Anda seharusnya hanya mempertimbangkan SQL dinamis saat diperlukan, bukan sebagai pilihan pertama.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pemeran yang ditentukan bukan kesalahan yang valid menggunakan C #

  2. Kinerja SQL JOIN vs IN?

  3. Cara mendapatkan daftar semua database dari server sql di kotak kombo menggunakan c#.net

  4. Penghapusan duplikat

  5. Perbedaan antara menambahkan parameter ke prosedur tersimpan di SQL Server?