首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

这样动态拼接对吗,为什么报错

2012-10-19 
求助:这样动态拼接对吗,为什么报错啊有一个临时表#temptabmon1,字段有固定的和动态生成的,其中动态生成的

求助:这样动态拼接对吗,为什么报错啊
有一个临时表#temptabmon1,字段有固定的和动态生成的,其中动态生成的字段名和个数不定,例如:
name 固定字段
ID 固定字段
生日 固定字段
地址 固定字段
成绩1 动态生成
成绩2 动态生成
成绩3 动态生成
成绩4 动态生成



成绩X 动态生成

我想select 所有成绩字段,但不是不要name和ID,语句如下:

SQL code
declare @s varchar(1000)   select @s = isnull(@s+',', '') + [name] from tempdb.dbo.syscolumns where id = object_id(N'tempdb..#temptabmon1')  and name not in ('name','id')set @s='select a.生日,a.地址'+@s+ ' into #temptab from #temptabmon1 a'exec(@s)select * from #temptabdrop table #temptabdrop table #temptabmon1

但总是有错误
Msg 208, Level 16, State 0, Procedure ImptMonthlyMtr, Line 101
Invalid object name '#temptab'.


[解决办法]
SQL code
declare @s varchar(1000) select @s='if object_id('tempdb..#temptab') is not nulldrop table #temptabcreate table #temptab(xxxx)' select @s =@s+ isnull(@s+',', '') + [name] from tempdb.dbo.syscolumns where id = object_id(N'tempdb..#temptabmon1')  and name not in ('name','id')set @s='select a.生日,a.地址'+@s+ ' into #temptab from #temptabmon1 a'exec(@s)---与其这样 还不如直接用实体表
[解决办法]
又是这个select into 的问题
在 EXEC 里面创建的临时表 在exec执行完的时候就是释放了

热点排行