代码改变世界

exec和临时表

2013-01-07 07:28  Andy Ge  阅读(435)  评论(0编辑  收藏  举报

exec中的语句能够访问主方法中创建的临时表

如:

select 1 as a into #tt
exec('select * from #tt')

 

能正确返回。

 

但如果在exec中创建了临时表,在主程序中是访问不到的

 

exec('select 1 as a into #tt')

select * from #tt

 

将会报错,找不到#tt

 

也就是说在调用的子方法中创建了临时表,在退出子方法时将会被删除,但是在父方法中创建的临时表,在子方法中可以访问。

该规则适用于在一个存储过程中创建了临时表,如果该存储过程调用了其他的存储过程,这个被调用的存储过程同样可以访问到该临时表。