sql--关于exec和sp_execute

sql:exec与sp_excutesql的比较

exec与sp_execute都可以执行存储过程和批处理动态sql语句,以下所属均是关于批处理动态sql语句方面。 

一、关于输入参数与输出参数

1、使用EXEC时,如果想访问变量,即有输入参数,那么必须把该变量串联到动态构建的代码字符串中。

2、当我们想要执行下语句输出count(*)时: 

若要使用EXEC,则必须要利用建立临时表的方法:

显然,这是非常不方便的。

3、sp_excutesql与exec的最大区别之一是sp_executesql提供一个借口,该接口支持输入参数也支持输出参数。同样是上面输出count(*)d的例子,应用sp_execute如下:

4、在性能方面,如果每次传入的参数@e_no不同,应用sp_excutesql时要执行的动态sql不会变化,只是传入的参数值在变化,每次执行的时候就会秒用重新编译。但是exec不一样,由于每次传入的@e_no不同,所以每次生成的@sql不一样,这样没执行一次就必须要重新编译一次。

原文地址:https://www.cnblogs.com/darrenliu/p/4434471.html