Search

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

posted @ 2012-07-20 15:24  flowerdog  阅读(306)  评论(0编辑  收藏  举报