根据我的要求,我正在创建一个临时表,如下所示:
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
但是,显示如下错误:
Msg 102,Level 15,State 1,Procedure ST_Proc_Rpt_MonthlyTimeReportSummary,Line 94
'@DateColumns'附近的语法不正确
答案 0 :(得分:1)
哦......太简单了,但在我在论坛上发布这个问题之前,我想不出这样的想法。无论如何,其他人可以使用它:
EXEC('ALTER TABLE #ResourceMonthlyTimeReport ADD ' + @DateColumns)
答案 1 :(得分:0)
表变量就像在内存中创建的临时表,可以在创建它的范围内使用。创建后,无法使用ALTER TABLE语句更改表变量的结构。最好在声明中添加另一列,并在需要时使用它。请注意,表变量可以包含也接受NULL值的列。