① 动态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是在运行时动态生成执行计划的。
两者没有哪种最好,哪种最优,都是根据业务,具体判断应该使用何种方式来实现