前言

個人接觸到動態組合與執行 SQL 方法,主要的情境在執行 SP 階段,需要動態取得的不同資料庫名稱 (同主機),執行跨資料庫存取資料的時候需要動態語法。實際上若並非必要,個人不太喜歡動態組合語法,主因是非常的難以測試,尤其是執行非常長的語法,讓除錯的困難度增加不少。


我們先來介紹簡單使用 sp_executesql,我們的情境案例為替換掉資料庫名稱即可。首先要執行的語法設定為字串






若需要帶入參數,語法為

EXEC SP_EXECUTESQL 執行語法, 帶入參數型態, 帶入參數;






依據官方網站的建議:
sp_executesql 會比 EXECUTE 更具有多變性;同時由於 sp_executesql 所產生的執行計畫更能讓 SQL Server 重複使用,因此 sp_executesql 也會比 EXECUTE 更有效率 (參考資料 1)

故建議使用 sp_executesql  代替直接使用 EXECUTE