我有一個遊標,裏面有一個alter table命令,我想用它在特定表中創建新列。列名將包含來自另一個表的一列中的值,這就是爲什麼我使用光標執行此操作的原因。無論如何,我不斷收到此錯誤消息:Msg 173,Level 15,State 1,Line 1 'nvarchar'列的定義必須包含數據類型。。現在我宣佈所有數據類型(嗯,我想我做了,我檢查),我無法找到otu爲什麼我不斷收到此消息。在Google上找不到任何類似的問題,所以我決定在本網站上詢問我的第一個問題。希望能夠快速回答。代碼如下:列'nvarchar'的定義必須包含數據類型
DECLARE @rbr_param nvarchar(255)
DECLARE @cName nvarchar(255)
SET @cName = 'P_'[email protected]_param+'_P'
DECLARE curs CURSOR FOR SELECT DISTINCT rbr_param FROM dbo.parametri_pomocna ORDER BY rbr_param
OPEN curs
FETCH NEXT FROM curs
INTO @rbr_param
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC('ALTER TABLE dbo.Parametri ADD ' + @cName + ' nvarchar(255)')
FETCH NEXT FROM curs
INTO @rbr_param
END
CLOSE curs
DEALLOCATE curs
我有你的代碼有問題。你已經把它標記爲「mysql」,但你使用'+'作爲字符串連接,以及'exec()'。你在使用SQL Server還是MySQL? –
SQL Server ... exciedently我添加了mysql標記。我的不好 – Stojdza
作爲評論,絕對不要直接執行動態SQL字符串。將它分配給一個變量,然後執行它:'exec sp_executesql @ sql'然後如果你有奇怪的語法錯誤,你可以用'PRINT @ sql'來查看正在執行的實際字符串是什麼。 – Pondlife