Sql server 2008 ALTER TABLE使用字符串变量添加多个列

Sql server 2008 ALTER TABLE使用字符串变量添加多个列,sql-server-2008,sql-server-2012,Sql Server 2008,Sql Server 2012,根据我的要求,我正在创建一个临时表,如下所示: CREATE TABLE #ResourceMonthlyTimeReport ( RowId INT IDENTITY(1,1), ResourceID UNIQUEIDENTIFIER, TaskId UNIQUEIDENTIFIER, ProjectId UNIQUEIDENTIFIER, -- Some column names containing date should come here. )

根据我的要求,我正在创建一个临时表,如下所示:

CREATE TABLE #ResourceMonthlyTimeReport
(
    RowId INT IDENTITY(1,1),
    ResourceID UNIQUEIDENTIFIER,
    TaskId UNIQUEIDENTIFIER,
    ProjectId UNIQUEIDENTIFIER,
    -- Some column names containing date should come here.
)
[01 Mar, 2013] NVARCHAR(10),
[02 Mar, 2013] NVARCHAR(10),
[03 Mar, 2013] NVARCHAR(10),
在上表中,日期列应显示如下所示:

CREATE TABLE #ResourceMonthlyTimeReport
(
    RowId INT IDENTITY(1,1),
    ResourceID UNIQUEIDENTIFIER,
    TaskId UNIQUEIDENTIFIER,
    ProjectId UNIQUEIDENTIFIER,
    -- Some column names containing date should come here.
)
[01 Mar, 2013] NVARCHAR(10),
[02 Mar, 2013] NVARCHAR(10),
[03 Mar, 2013] NVARCHAR(10),
。。。列数取决于参数值
@FromDate
@ToDate

我编写了一个函数
dbo.F_ST_DaysColumns(@FromDate,@ToDate)
,它以字符串形式生成以下输出:

[01 Mar, 2013] NVARCHAR(10),
[02 Mar, 2013] NVARCHAR(10),
[03 Mar, 2013] NVARCHAR(10)
现在,我不明白如何将此结果附加到上面的临时表
#ResourceMonthlyTimeReport

我做过这样的事情:

DECLARE @DateColumns AS VARCHAR(MAX)
SET @DateColumns = dbo.F_ST_DaysColumns(@FromDate, @ToDate)

ALTER TABLE #ResourceMonthlyTimeReport ADD @DateColumns
但是,显示如下错误:

CREATE TABLE #ResourceMonthlyTimeReport
(
    RowId INT IDENTITY(1,1),
    ResourceID UNIQUEIDENTIFIER,
    TaskId UNIQUEIDENTIFIER,
    ProjectId UNIQUEIDENTIFIER,
    -- Some column names containing date should come here.
)
[01 Mar, 2013] NVARCHAR(10),
[02 Mar, 2013] NVARCHAR(10),
[03 Mar, 2013] NVARCHAR(10),
Msg 102,第15级,状态1,程序ST_Proc_Rpt_MonthlyTimeReportSummary,第94行
“@DateColumns”附近的语法不正确


哦。。。这太简单了,但在我把这个问题发布到论坛之前,我不能这样想。无论如何,其他人可以使用它:

EXEC('ALTER TABLE #ResourceMonthlyTimeReport ADD ' + @DateColumns)

Table变量类似于在内存中创建的临时表,可以在创建它的范围内使用。一旦创建了表变量,就不可能使用ALTERTABLE语句来更改表变量的结构。最好在声明中添加另一列,并随时使用它。注意,表变量可以有也接受空值的列