exec不说了。
sp_executesql是个扩展存储过程, 主要优势是 : 参数化执行和可以比exec更加容易获得sql执行的返回值。 可以防止sql注入!
declare @sql nvarchar(100)
set @sql = 'select @a = @a + 1, @b = @b + 1'declare @a1 intdeclare @b1 intset @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