我有一个游标,里面有一个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