3

我在 Microsoft SQL Server 2012 中有一个链接的 Oracle 11g 服务器。

我正在尝试从 Oracle 检索一个大型链接数据集,因此为了限制它,我只想获取前 100 条记录。

在 SQL Server 中,它很简单

select top 100 from ....

在 Oracle 中,语法是

...where rownum <= 100 order by rownum

只要我的 SQL Server 2012 查询中有两个以上的连接,我的

select top 100

导致以下错误

链接服务器“BIS”的 OLE DB 提供程序“OraOLEDB.Oracle”返回消息“ORA-01403:未找到数据
消息 7346,级别 16,状态 2,第 1
行无法从 OLE DB 提供程序“OraOLEDB. Oracle”用于链接服务器“BIS”。

如果我拿出top 100来,它可以工作,但会在我们的网络上拖出太多数据。另外,在我完成之前,我还需要将相当数量的连接添加到我已经拥有的 3 的 select 语句中。

如何在选择语句中加入大量表,但在我的 SQL Server 2012 上使用 T-SQL 语法仅返回前 100 条记录并从 Oracle 检索这些记录?

4

1 回答 1

1

根据您想要的逻辑,您可以将前 100 行拉到一个临时表中,然后使用它。我说“取决于”是因为您可能希望最终查询有 100 行,这可能需要 Oracle 框中的更多行。

于 2014-07-14T23:58:07.720 回答