【问题标题】:Oracle linked server top N syntaxOracle 链接服务器 top N 语法
【发布时间】:2014-09-05 00:53:32
【问题描述】:

我在 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 行
无法从链接服务器“BIS”的 OLE DB 提供程序“OraOLEDB.Oracle”获取该行的数据。

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

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

【问题讨论】:

  • 使用 openquery 查询你的 oracle 表。如果您需要将 oracle 数据连接到 sql server,请使用 openquery 填充临时表并以这种方式进行连接。

标签: sql sql-server oracle linked-server top-n


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多