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