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

求助: 动态创建临时表并成功插入数据后,不能查询出该临时表中的数据,这是什么原因?
如下:

------解决方案--------------------
如下在哪儿?
------解决方案--------------------
应该不会吧.
是不是你代码写的有问题,贴出来看看.
------解决方案--------------------
如果你确定插入成功,那么你是不是在查询之前断开过连接?
------解决方案--------------------

------解决方案--------------------
动态创建的临时表,只在动态SQL 语句中有效,在外部无法访问,如:

declare @sql varchar(1000)

set @sql = ' create table #t(id int) insert into #t values(1) select * from #t '

exec (@sql)

不能在exec后,即外部访问在动态SQL创建的临时表
------解决方案--------------------
这个问题,就是变量作用域的问题。

在动态SQL中创建的临时表,不能在外部访问,动态SQL一执行完,临时表自动销毁。


------解决方案--------------------
--直接这样建不好的多:

declare @sql varchar(1000)

set @sql = ' select id into # from #t '

exec (@sql)


------解决方案--------------------
当断开连接后,系统自动把临时表给删除啦

------解决方案--------------------
可以用 ## 创建
declare @sql varchar(1000)

set @sql = 'select * into ##t from 某个表 '

exec (@sql)

select * from ##t

drop table ##t
------解决方案--------------------
如下就是空白,晕倒!