EXEC和sp_executesql的區別
阿新 • • 發佈:2018-12-14
首先是微軟library對sp_executesql的介紹(http://technet.microsoft.com/zh-cn/library/ms188001.aspx), 並指出相對於exec(ute)的優勢:
-
由於 sp_executesql 字串中的 Transact-SQL 語句的實際文字在兩次執行之間並未改變,因此,查詢優化器應該可以將第二次執行中的 Transact-SQL 語句與第一次執行時生成的執行計劃相匹配。 因此,SQL Server 不必編譯第二條語句。
-
Transact-SQL 字串只生成一次。
-
整數引數按其本身格式指定。
MSSQL為我們提供了兩種動態執行SQL語句的命令,分別是EXEC和sp_executesql;通常,sp_executesql則更具有優勢,它提供了輸入輸出介面,而EXEC沒有。還有一個最大的好處就是利用sp_executesql,能夠重用執行計劃,這就大大提供了執行效能(對於這個我在後面的例子中會詳加說明),還可以編寫更安全的程式碼。EXEC在某些情況下會更靈活。除非您有令人信服的理由使用EXEC,否側儘量使用sp_executesql.