在存储过程中动态创建临时表

在存储过程中动态创建临时表 下面代码是执行不成功 .

DECLARE @CreateTableSql VARCHAR(1000)   --创建临时表的命令
SET @CreateTableSql='Create Table #FirstTable(名称 varchar(20) null,'

DECLARE Namecursor CURSOR  --声明游标 用于查询大类名称
FOR
SELECT F_name FROM food_typeinfo WHERE F_type=0  --查询大类的名称
OPEN Namecursor
DECLARE @TypeName NVARCHAR(20)  --存储大类的名称
FETCH NEXT FROM Namecursor INTO @TypeName  
WHILE(@@FETCH_STATUS=0)  
BEGIN
SET @CreateTableSql=@CreateTableSql+@TypeName+' varchar(20) null,'
FETCH NEXT FROM Namecursor INTO @TypeName
END
CLOSE Namecursor --关闭游标
DEALLOCATE Namecursor --释放游标
SET @CreateTableSql=SUBSTRING(@CreateTableSql,1,LEN(@CreateTableSql)-1)+')'  --去掉最后一个逗号
EXEC(@CreateTableSql)  --创建临时表
PRINT @CreateTableSql
SELECT * FROM #FirstTable

上面的一堆代码总结,简单的就两句:

exec('Create Table #FirstTable(first varchar(20) null,seconde varchar(20) null,three varchar(20) null,four varchar(20) null)')

上面这句无错误,能执行

但是 : Select * from #FirstTable  错误,提醒找不到 #FirstTable 

是不是 exec('Create Table #FirstTable(first varchar(20) null,seconde varchar(20) null,three varchar(20) null,four varchar(20) null)') 

动态创建临时表不行呢? (有待解决)

既然不行,那换个方法

先创建一个临时表,然后动态插入列. 这样就可以.

posted @ 2011-07-13 17:27  xfyn  阅读(2744)  评论(0编辑  收藏  举报