创建临时表为什么不存在?
我现在是用游标动态生成临时表,遇到一个问题.
举例说明:
declare @strsql varchar(4000)
set @strsql= 'create table #Lanvasi( a varchar(100) ) '
exec (@strsql)
select * from #Lanvasi
-------------------
--出现错误提示
服务器: 消息 208,级别 16,状态 1,行 6
对象名 '#Lanvasi ' 无效。
这是怎么回事呢?
是不是临时表只存在exec运行的那个连接.运行完连接关闭,临时表就自动删除了吗
怎么样才能得到临时表
------解决方案--------------------declare @strsql varchar(4000)
set @strsql= 'create table #Lanvasi( a varchar(100) ) '
exec (@strsql+ ' select * from #Lanvasi ')
------解决方案--------------------declare @strsql varchar(4000)
set @strsql= 'create table #Lanvasi( a varchar(100) ) '
exec (@strsql + 'select * from #Lanvasi ')
------解决方案--------------------生成临时表写在的动态sql语句中,但是select不是,不在一个作拥域内,所以提示临时表不存在
要么都写在动态sql中,就象楼上的写的,要么都不写
------解决方案--------------------create table #Lanvasi( a varchar(100) )
declare @strsql varchar(4000)
set @strsql= 'insert into #Lanvasi ... '
exec (@strsql)
select * from #Lanvasi
------解决方案--------------------declare @strsql varchar(4000)
set @strsql= 'create table #Lanvasi( a varchar(100) ) '
exec (@strsql+ ' select * from #Lanvasi ')
------解决方案--------------------declare @strsql varchar(4000)
set @strsql= 'create table #Lanvasi( a varchar(100) ) '
exec (@strsql)
到此 ,#Lanvasi的生命周期已经结束
所以在下面引用的时候会提示 对象名 '#Lanvasi ' 无效。
select * from #Lanvasi
上面的几位已给出正确答案
------解决方案--------------------临时表是只存在一个会话中
------解决方案--------------------!!!!!
好像以上几位说的不对吧?
!!!!!
——可能原因是:你执行建表的一段语句所在的数据库是什么?
比如:
use master
go
declare @strsql varchar(4000)
set @strsql= 'create table #Lanvasi( a varchar(100) ) '
exec (@strsql)
go
这样临时表就是建在master库里的,要进行查询,则
use master
go
select * from #Lanvasi
go
或者是select * from master..#Lanvasi