sp_excutesql可以重用执行计划,因此在性能上,比exec要好很多,简单示例,便于理解:
declare @inP1 int --输入参数1
declare @inP2 int --输入参数2
set @inP2 = 2
/*sp_executesql:执行语句,参数声明,参数赋值*/
exec sp_executesql N'select @p1=1;select @p2',--相当于存储过程的方法体部分,即执行语句
N'@p1 int out,@p2 int', --相当于存储过程的变量声明部分,即参数声明
@inP1 out,@p2=@inP2 --相当于调用存储过程,即参数赋值
select @inP1 --获取out参数的值
输出结果如下: