我有一个带有游标的SQL Server查询:
DECLARE @ids TABLE(id varchar(50))
INSERT INTO @ids VALUES ('1098264', '1098859', '1098860', '1098267', '1098265')
但是当我运行代码时,我收到一个错误:
插入错误:列名或提供的值数与表定义不匹配。
答案 0 :(得分:2)
您需要为每行使用一对支架,如下所示:
INSERT INTO @ids VALUES ('1098264'),('1098859'),('1098860'),('1098267'),('1098265')
答案 1 :(得分:2)
表格中只有一列,id
,您试图在表格中插入5列值。
试试这个
创建表格:
DECLARE @ids TABLE(id varchar(50))
将值插入表格:
INSERT INTO @ids VALUES ('1098264')
INSERT INTO @ids VALUES ('1098859')
INSERT INTO @ids VALUES ('1098860')
INSERT INTO @ids VALUES ('1098267')
INSERT INTO @ids VALUES ('1098265')
答案 2 :(得分:2)
有三种方法可以将多行插入表中(除了通过select语句)
INSERT INTO FOO (columna,columnb)
VALUES (1,a)
INSERT INTO FOO (columna,columnb)
VALUES (2,b)
INSERT INTO FOO (columna,columnb)
VALUES (3,c)
第二个
INSERT INTO FOO (columna,columnb)
select 1,'a'
UNION ALL
select 2,'b'
UNION ALL
select 3,'c'
第三(仅适用于SQLServer 2008及以上版本)
INSERT INTO FOO (columna,columnb)
VALUES (1,'a'),(2,'b'),(3,'c')
在您的问题的示例中,您试图将多个字段插入一列,这就是您收到错误的原因。
答案 3 :(得分:0)
表中只有1列,但正在尝试插入5个值。 首先在表中声明5个不同的列以保存5个值
例如: -
declare @IDS_1 varchar(50)
,@IDS_2 varchar(50)
,@IDS_3 varchar(50)
,@IDS_4 varchar(50)
,@IDS_5 varchar(50)
INSERT INTO @IDS VALUES ('1098264'
,'1098859'
,'1098860'
,'1098267'
,'1098265')