sql - SSIS OLE DB命令中的多个插入语句
问题描述
当我尝试在这样的 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 Native Client 11.0” Hresult:0x80004005 描述:“子查询返回超过 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;
推荐阅读
- node.js - 如何解决 Nodejs google-auth-library 无效令牌签名错误?
- javascript - JavaScript-创建一个函数来大写字符串的第一个字母
- django - 单击标记野生动物园时弹出窗口未打开
- image - 应用程序保存的图像未显示在图库中
- javascript - 解析 smpp dlr 报告
- python - 训练成本在 Tensorflow 代码示例中产生 Nan 值
- php - 有没有办法恢复 md5 散列输入?
- excel - 更新一个常见的 CELL 并在其他列的范围内反映相同
- c++ - 为单个类制作多个 operator<<() 定义
- actions-on-google - 我们可以在没有用户与谷歌家庭设备交互的情况下连续播放音乐吗