SQL动态临时表



我有一个表dbo。CTC_GRP。。。以下是表名和值。。。

**CTC_GRP_DS**
Bank Contact
Dept2
CS

我正在尝试创建一个临时表,如下所示。。这些是根据表列值生成的列名

   Proj_ID   Bank Contact     Dept2     CS

我的尝试如下。。。

  DECLARE @Dept NVARCHAR(MAX)
  DECLARE @DeptQry NVARCHAR(MAX)

  SELECT  @Dept = STUFF((SELECT ',' +  QUOTENAME(CTC_GRP_DS) + ' varchar(max)'
                from dbo.CTC_GRP
        FOR XML PATH(''), TYPE
        ).value('.', 'NVARCHAR(MAX)') 
    ,1,1,'')
 set @DeptQry = N'Create Table #temptable ( Proj_ID int,' + @Dept + ' '+') '
 print @DeptQry
 EXEC sp_executesql @DeptQry;

直到打印@DeptQry我才能到达,我该如何执行那些动态创建的sql。。。有人能帮我吗…

当调用退出时,在EXEC/sp_executesql中创建的临时表将被销毁。您需要在外部作用域中创建表。然后可以使用EXEC调用对其进行修改。类似
create table #temptable (Proj_ID int)
EXEC sp_executesql N'alter table #temptable add [Bank Contact] nvarchar(max)'
EXEC sp_executesql N'alter table #temptable add [Dept2] nvarchar(max) int'

不幸的是,每个新列都需要通过一个单独的alter table语句来添加。

显然,操纵这个表的所有东西都必须是动态SQL。

最新更新