当调用退出时,在
我有一个表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。