我在 SQL Server 中有一个链接服务器设置来访问 Oracle 数据库。我在 SQL Server 中有一个使用点表示法连接 Oracle 表的查询。我从 Oracle 收到“未找到数据”错误。在 Oracle 方面,我正在访问一个表(不是视图)并且不涉及存储过程。
首先,当没有数据时,我应该只得到零行而不是错误。
其次,在这种情况下实际上应该有数据。
三、只在PL/SQL代码中看到ORA-01403错误;从来没有在 SQL 中。
这是完整的错误消息:
链接服务器“OM_ORACLE”的 OLE DB 提供程序“OraOLEDB.Oracle”返回消息“ORA-01403:未找到数据”。
消息 7346,级别 16,状态 2,第 1 行无法从链接服务器“OM_ORACLE”的 OLE DB 提供程序“OraOLEDB.Oracle”获取行的数据。
这里有一些更多的细节,但它可能没有任何意义,因为你没有我的表格和数据。
这是有问题的查询:
select *
from eopf.Batch b join eopf.BatchFile bf
on b.BatchID = bf.BatchID
left outer join [OM_ORACLE]..[OM].[DOCUMENT_UPLOAD] du
on bf.ReferenceID = du.documentUploadID;
我不明白为什么会出现“未找到数据”错误。下面的查询使用相同的 Oracle 表并且不返回任何数据,但我没有收到错误 - 我只是没有返回任何行。
select * from [OM_ORACLE]..[OM].[DOCUMENT_UPLOAD] where documentUploadID = -1
下面的查询返回数据。我刚刚从联接中删除了其中一个 SQL Server 表。但是删除批处理表不会更改从批处理文件返回的行(两种情况下都是 271 行——批处理文件中的所有行都有一个批处理条目)。它仍应将相同的 batchFile 行连接到相同的 Oracle 行。
select *
from eopf.BatchFile bf
left outer join [OM_ORACLE]..[OM].[DOCUMENT_UPLOAD] du
on bf.ReferenceID = du.documentUploadID;
此查询返回 5 行。它应该与原始查询中的 5 相同。(我不能使用它,因为我需要来自批处理和批处理文件表的数据)。
select *
from [OM_ORACLE]..[OM].[DOCUMENT_UPLOAD] du
where du.documentUploadId
in
(
select bf.ReferenceID
from eopf.Batch b join eopf.BatchFile bf
on b.BatchID = bf.BatchID);
有没有人遇到过这个错误?