0

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

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

但是,显示如下错误:

消息 102,级别 15,状态 1,过程 ST_Proc_Rpt_MonthlyTimeReportSummary,第 94 行
“@DateColumns”附近的语法不正确

4

2 回答 2

1

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

EXEC('ALTER TABLE #ResourceMonthlyTimeReport ADD ' + @DateColumns)
于 2013-04-04T05:09:11.913 回答
0

表变量就像在内存中创建的临时表,可以在创建它的范围内使用。一旦创建,就不能使用 ALTER TABLE 语句来更改表变量的结构。最好在声明中添加另一列并在需要时使用它。请注意,表变量也可以具有接受 NULL 值的列。

于 2015-04-11T10:07:15.877 回答