我有一个游标,里面有一个 alter table 命令,我想用它在特定表中创建新列。列名称将包含来自另一表的一列的值,这就是我使用游标来执行此操作的原因。无论如何,我不断收到此错误消息:Msg 173,Level 15,State 1,Line 1 列“nvarchar”的定义必须包含数据类型。。现在我声明了所有数据类型(我想我做了,我检查过),但我不明白为什么我不断收到此消息。在谷歌上找不到任何类似的问题,所以我决定在这个网站上问我的第一个问题。希望尽快得到答复。这是代码:
DECLARE @rbr_param nvarchar(255)
DECLARE @cName nvarchar(255)
SET @cName = 'P_'+@rbr_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
最佳答案
@cName 不会随着 @rbr_param 值的更新而自动更新。您需要移动此行
SET @cName = 'P_'+@rbr_param+'_P'
在循环内部。
关于sql - 列 'nvarchar' 的定义必须包含数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15794875/