SQL 动态临时表

sk7*_*730 0 sql-server-2008

我有一个表 dbo.CTC_GRP...下面是表名和值...

**CTC_GRP_DS**
Bank Contact
Dept2
CS
Run Code Online (Sandbox Code Playgroud)

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

   Proj_ID   Bank Contact     Dept2     CS
Run Code Online (Sandbox Code Playgroud)

我的尝试如下...

  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;
Run Code Online (Sandbox Code Playgroud)

直到打印@DeptQry 我能够到达,我怎么能执行那些动态创建的 sql ......任何人都可以帮助我......

Dam*_*ver 5

当该调用退出时,在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'
Run Code Online (Sandbox Code Playgroud)

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

很明显,操作这个表的所有东西也必须是动态 SQL。