2

我想在 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)
)

在上面的##EmpMonthlyTimeReport表中,列 [07 Nov]、[08 Nov]、[09 Nov]不是静态的。他们正在通过另一个函数动态创建。

因此,我在一个名为@EmpMonthlyTimeReport的变量中动态构造上表,并且我正在执行构造的 sql 字符串,如下所示:

EXEC(@EmpMonthlyTimeReport)

我收到以下错误:

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.
4

1 回答 1

1

非常愚蠢的工作。

我已将 @EmpMonthlyTimeReport 变量声明从 VARCHAR(MAX) 更改为 NVARCHAR(MAX)

就是这样。一切都按预期工作。

于 2012-11-07T08:39:35.950 回答