簡體   English   中英

更改表列語法錯誤

[英]Alter Table Column Syntax Error

我需要創建一個帶有動態列的表,所以我創建了一個游標,該游標遍歷表的記錄並創建必要的列,但是,這給了我這個錯誤:

'INT'附近的語法不正確。

示例代碼:

SELECT @sql = 'ALTER TABLE #temp3 ADD ' + @nome + ' INT'
EXEC (@sql);

我也嘗試過這個:

EXEC ('ALTER TABLE #temp3 ADD ' + @nome + ' INT')

但是還是一樣的錯誤

有什么建議么?

編輯:可以接收@nome的值的示例

  • 很壞
  • 很好

您已經指出@nome可能包含例如Very Bad。 如果是這樣,則它包含一個空格-您需要分隔名稱,以便SQL Server知道該空格是名稱的一部分:

SELECT @sql = 'ALTER TABLE #temp3 ADD [' + @nome + '] INT'
EXEC (@sql);

或更正確地使用QUOTENAME

SELECT @sql = 'ALTER TABLE #temp3 ADD ' + QUOTENAME(@nome) + ' INT'
EXEC (@sql);

否則,SQL Server嘗試添加一個名為Very的列,其數據類型為Bad ,並且在此之后它甚至不知道如何解釋int

感謝@Damien鼓勵我進行調查:

if object_id(N'#tempg') is not null
    drop table #tempg

select 1 as i into #tempg

select * from #tempg

alter table #tempg add j int

exec sp_executesql N'alter table #tempg add k int'

select * from #tempg

注意

exec 'alter table #tempg add l int'

失敗於

Msg 102, Niveau 15, État 1, Ligne 1
Syntaxe incorrecte vers 'alter table #tempg add l int'.

==========================================版本

exec ('alter table #tempg add l int')

運行

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM