日期:2014-05-18  浏览次数:20510 次

sp_executesql 输出表
用execute 与 sp_executesql 比较。

我的理解是:
其实用 exec 只要再多一句比如:set @str='***'+@tmp 就可以替代 sp_executesql 输入变量@tmp了

但是输出变量怎么处理呢?好象只能用sp_executesql了
还有如何通过sp_executesql 来构造临时表呢?
比如一个临时表的表的结构是动态变化,用sp_executesql 怎么处理呢?
游标好象都可以通过 exec 动态构造 ,可是临时表就不可以,着是为什么呢?

比如要实现下面这种功能,怎么处理好呢?
declare @str varchar(200)
set @str='create table #a(id int,name varchar(10)'
--其中#a结构 可能会根据不同情况发生改变
exec(@str)

--然后能对#a 进行种操作。


------解决方案--------------------
--然后能对#a 进行种操作。 

不可以
declare @str varchar(200)
set @str='create table #a(id int,name varchar(10)'
--其中#a结构 可能会根据不同情况发生改变
exec(@str+';insert into #a selec 1,2')这样的
变量的作用域不同,#a在exec里,外面访问不到,键实表或##全局表可以