2013-04-04 57 views
0

對於我的要求,我創建了一個臨時表象下面這樣:ALTER TABLE添加多個列與字符串變量

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) ge nerates以下輸出爲字符串:

[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'

回答

1

唉......這太簡單了,但我不能這樣想。礦石我在論壇上發佈了這個問題。無論如何,別人可以使用它:

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

表變量是像在可以在正在創建它的範圍內使用的存儲器中創建的臨時表。一旦創建,就不可能通過使用ALTER TABLE語句來改變表變量的結構。最好在聲明中添加另一列,並在需要時使用它。請注意,表變量可以包含也接受NULL值的列。