【发布时间】:2016-05-29 10:12:32
【问题描述】:
这是一个真正的头脑风暴(至少对我来说)
我正在运行一个查询,假设它是:
SELECT number FROM equipment e
left outer join OPENQUERY(ORACLESERVER, 'SELECT num FROM equip_nums WHERE MODEL_NO = ''FOOBAR''') ora
ON e.number = ora.num
WHERE num IS NULL
AND remove = 'no'
AND used = 'yes'
AND model = 'FOOBAR'
此查询针对多个模型运行,其中大约 50 个。它适用于其中 47 个模型。但随后它失败并给出以下错误:
OLE DB provider "OraOLEDB.Oracle" for linked server "ORACLESERVER" returned message "ORA-01403: no data found".
Msg 7330, Level 16, State 2, Line 1
Cannot fetch a row from OLE DB provider "OraOLEDB.Oracle" for linked server "ORACLESERVER".
现在,我知道你在想什么。“OPENQUERY 中的查询返回为空,你需要处理它!”虽然我同意应该处理这个案例。问题是那个查询不应该是空的!如果我从同一台服务器运行此查询
SELECT * FROM OPENQUERY(ORACLESERVER, 'SELECT num FROM equip_nums WHERE MODEL_NO = ''FOOBAR''')
我拉回了大约 1100 行。所以我觉得那里应该有用于联接的数据。
任何人都可以对此有所了解吗?我真的很困惑……
【问题讨论】:
-
我觉得奇怪的是您的查询完全有效,因为两个表都有字段 num 并且您没有在 where 子句中为其设置别名。
-
您可以尝试将 openquery 中的数据提取到临时表中,然后加入该表
标签: sql sql-server oracle oracle11g