当我尝试在这样的OLE DB命令中放置多个插入语句时:
INSERT INTO [TABLE_A] ([NAME_A]) VALUES (@a)
INSERT INTO [RELATION_TABLE]([ID_A],[ID_B])
VALUES (
(SELECT [ID_A] FROM [TABLE_A] WHERE [NAME_A] = @a),
(SELECT [ID_B] FROM [TABLE_B] WHERE [NAME_B] = @b)
)
我收到此错误:
OLE DB记录可用。来源:“ Microsoft SQL Server本机 客户端11.0“结果:0x80004005说明:”返回了子查询 大于1的值。当子查询跟随=时,这是不允许的 !=,<,<=,>,> =或将子查询用作表达式时。”。
每个子选择语句仅返回一条记录。变量已声明并设置。 有什么建议可以解决这个问题或错误的确切位置是什么?
答案 0 :(得分:1)
我建议运行此查询:
SELECT a.ID_A, b.ID_B
FROM TABLE_A a JOIN
TABLE_B b
ON a.NAME_A = @a AND b.NAME_B = @b;
这可能会返回重复项-表示您对数据有误。有重复项。您可能应该修复数据并在每个表中的name
上创建唯一索引或约束,以确保数据完整性。
如果这返回了您想要的内容,则将插入内容设为:
INSERT INTO [RELATION_TABLE]([ID_A],[ID_B])
SELECT a.ID_A, b.ID_B
FROM TABLE_A a JOIN
TABLE_B b
ON a.NAME_A = @a AND b.NAME_B = @b;
答案 1 :(得分:0)
确保select语句仅返回一个值。
self.navigationItem.titleView.accessibilityIdentifier = YOUR_ACCESSIBILITY_IDENTIFIER;