简体   繁体   English

如何在SQL Server 2005中使用动态查询创建临时表

[英]How to create Temporary table with Dynamic query in SQL Server 2005

I want to create Temporary table dynamically in SQL Server 2005 like below. 我想在SQL Server 2005中动态创建临时表,如下所示。

Create Table ##EmpMonthlyTimeReport
(
    EmpID UNIQUEIDENTIFIER,
    EmpName VARCHAR(100),
    TaskId UNIQUEIDENTIFIER,
    [07 Nov] NVARCHAR(10),
    [08 Nov] NVARCHAR(10),
    [09 Nov] NVARCHAR(10)
)

In the above ##EmpMonthlyTimeReport table, columns [07 Nov], [08 Nov], [09 Nov] are NOT static. 在上面的## EmpMonthlyTimeReport表中,[07 Nov],[08 Nov],[11 Nov]列不是静态的。 They are creating dynamically through another function. 他们通过另一个功能动态创建。

Hence, I am dynamically constructing the above table in one variable called @EmpMonthlyTimeReport and I'm executing the constructed sql string like below: 因此,我在一个名为@EmpMonthlyTimeReport的变量中动态构造了上面的表,并且正在执行如下构造的sql字符串:

EXEC(@EmpMonthlyTimeReport)

I am getting the following error: 我收到以下错误:

Msg 50000, Level 16, State 1, Procedure SVS_WorkOnWeekends, Line 157
The name 'INSERT INTO ##EmpMonthlyTimeReport(EmpID, EmpName, TaskId)
SELECT EmpId, EmpName, TaskId FROM TableData 
SELECT * FROM ##EmpMonthlyTimeReport
DROP TABLE ##EmpMonthlyTimeReport' is not a valid identifier.

Very silly work around. 非常愚蠢的工作。

I have changed the @EmpMonthlyTimeReport variable declaration from VARCHAR(MAX) to NVARCHAR(MAX) 我已经将@EmpMonthlyTimeReport变量声明从VARCHAR(MAX)更改为NVARCHAR(MAX)

That's it. 而已。 Everything is working as expected. 一切都按预期进行。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM