【发布时间】: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