2015-05-02 47 views
0
DECLARE 
    @countFlag INT, 
    @maxNum INT = 5, 
    @addingName NVARCHAR(6) 

SET @countFlag = 1 

WHILE (@countFlag <= @maxNum) 
    BEGIN 
     SET @addingName = 'name' + CAST(@countFlag AS NVARCHAR(2)) 

     ALTER TABLE TableName 
     ADD 
     @addingName NVARCHAR(30) 

     SET @countFlag = @countFlag + 1 
    END 
======================================================== 

這在一組過程的開始處被調用。 @maxNum實際上是根據一個問題傳遞給操作符,並將現有數據庫的「形狀」更改爲包含更多列。我希望將結果列名稱設置爲「name1」「name2」等,但在ADD語句執行後,我在「@addingName'附近獲得了」錯誤的語法「。我在這裏做錯了什麼?向SQL Server 2014中的現有表添加一列,包含派生列名

回答

1

你不能幹這種方式,你應該Exec的動態組合查詢,並執行它:

DECLARE @sqlCommand varchar(200) 

SET @sqlCommand = 'ALTER TABLE TableName ADD ' + @addingName + ' NVARCHAR(30) ' 

EXEC (@sqlCommand) 
相關問題