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:
-
sp_executesql
lebih cenderung menggunakan kembali paket kueri (lihat SQL Dinamis - EXEC(@SQL) versus EXEC SP_EXECUTESQL(@SQL) ); -
jauh lebih mudah untuk meneruskan parameter yang sangat diketik ke
sp_executesql
(menggagalkan injeksi SQL lebih baik daripada menggabungkan string); dan, -
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.