mssqlerver中 exec 和 sp_executesql 区别
exec不说了。
sp_executesql是个扩展存储过程, 主要优势是 : 参数化执行和可以比exec更加容易获得sql执行的返回值。 可以防止sql注入!
declare @sql nvarchar(100)
set @sql = 'select @a = @a + 1, @b = @b + 1'
declare @a1 int
declare @b1 int
set @a1 = 1;
set @b1 = 2;
exec sp_executesql @sql, N'@a int out, @b int out', @a = @a1 output, @b = @b1 output
select @a1, @b1
结果是:
----------
2,3