sql - 列 'nvarchar' 的定义必须包含数据类型

标签 sql sql-server

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

相关文章:

MYSQL GROUP BY 在列中具有不同的值

sql - 从 SQL Server 2008 中的所有表中选择所有列

java.sql.sqlexpcetion :ORA-00917:missing comma

sql-server - pyODBC 和 SQL Server 2008 和 Python 3

python - 如何将 Python 字典插入 SQL Server 数据库表?

sql - 从多个表中获取总和

java - 在代码(Java)中或使用触发器(MySQL)在数据库中以编程方式更新数据?

php - 仅返回数据库中的重复记录

c# - 为什么在 sql server 中生成的 MD5 哈希值不相等?

sql - 如何插入表并获取主键值?