① 動態sql和靜態sql到底是說明區別
靜態sql:語句類型在編程時候必須是確定好的。比如
createprocdbo.Usp_Test
(@IDint)
as
begin
select*fromemployeewhereID=@ID
end
GO
以上只有@ID是變數,其他的都必須是固定語句。
動態sql:語句類型可以在運行期間指定,比如
createprocdbo.Usp_Test
(@IDint)
as
begin
declare@strsqlnvarchar(8000)
set@strsql=N'select*fromemployeewhereID='+cast(@IDasnvarchar(20))
exec@strsql
end
GO
靜態sql的好處就是事先SQL已經預編譯,執行計劃已生成,執行起來效率要高
而動態sql是在運行時動態生成執行計劃的。
兩者沒有哪種最好,哪種最優,都是根據業務,具體判斷應該使用何種方式來實現