gpt4 book ai didi

sql-server - sql server链接服务器到oracle返回没有数据时数据存在

转载 作者:行者123 更新时间:2023-12-02 13:44:25 26 4
gpt4 key购买 nike

我在 SQL Server 中有一个链接服务器设置来访问 Oracle 数据库。我在 SQL Server 中有一个查询,它使用点表示法连接 Oracle 表。我从 Oracle 收到“未找到数据”错误。在 Oracle 方面,我正在访问一个表(而不是 View ),并且不涉及存储过程。

首先,当没有数据时,我应该只得到零行而不是错误。
其次,这种情况下实际上应该有数据。
第三,我只在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 表之一。但是删除批处理表不会更改从batchFile返回的行(两种情况下均为271行——batchFile中的所有行都有一个批处理条目)。它仍然应该将相同的batchFile行连接到相同的Oracle行。

select *
from eopf.BatchFile bf
left outer join [OM_ORACLE]..[OM].[DOCUMENT_UPLOAD] du
on bf.ReferenceID = du.documentUploadID;



此查询返回 5 行。它应该与原始查询中的 5 相同。 (我不能使用这个,因为我需要来自批处理和batchFile表的数据)。

       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);

有人遇到过这个错误吗?

最佳答案

今天我在内部连接中遇到了同样的问题。创建 Table Valued Functioncodechurn 建议或使用 Temporary Tableuser1935511 建议或更改 Join Typescymorg 建议我没有选择,我喜欢分享我的解决方案。

我用了Join Hints将查询优化器推向正确的方向,因为问题似乎是由本地远程表的嵌套循环连接策略引起的。对我来说,HASHMERGEREMOTE 连接提示有效。

对于您来说,REMOTE 不会是一个选项,因为它只能用于内连接操作。因此,使用类似下面的内容应该可行。

select *
from eopf.Batch b
join eopf.BatchFile bf
on b.BatchID = bf.BatchID
left outer merge join [OM_ORACLE]..[OM].[DOCUMENT_UPLOAD] du
on bf.ReferenceID = du.documentUploadID;

关于sql-server - sql server链接服务器到oracle返回没有数据时数据存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19225551/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com