在存储过程中动态创建临时表
在存储过程中动态创建临时表 下面代码是执行不成功 .
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
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)')
动态创建临时表不行呢? (有待解决)
既然不行,那换个方法
先创建一个临时表,然后动态插入列. 这样就可以.