在sql server表和oracle表之间加入

时间:2011-09-22 13:37:30

标签: oracle tsql sql-server-2008

我现在一直在使用SQL Server 2008,之前从未使用过Oracle。我能够通过SQL Server以语法

访问Oracle表
select * from [OracleDB1]..[OracleDB1].[Zips]  

(其中OracleDB1是oracle数据库,Zips是我需要的表)

是否可以在表值函数中将SQL Server表与此表连接起来?正如我对SQL Server表一样使用普通连接会在Oracle表上产生无效对象名错误。

这可以直接(或根本没有)完成,还是可以通过其他方式来完成,例如表变量?

示例查询:

select * from dbo.Table1 t INNER JOIN [OracleDB1]..[OracleDB1].[Zips] z where t.zip = z.zip

1 个答案:

答案 0 :(得分:1)

由于我错过了ON条款,我正在执行连接错误。通过宣布一个临时表并参与其中,我能够让它发挥作用。

declare @tempTable table{
    ZIP nvarchar(5),
    COUNTY nvarchar(10)
}
insert @tempTable select ZIP, COUNTY, from [OracleDB1]..[OracleDB1].[ZIPS]
select * from dbo.Table1 t INNER JOIN @tempTable z on t.ZIP = v.ZIP where t.AdmissionOn >= '08-08-2011' AND t.AdmissionOn <= ''09-08-2011'

一旦我添加了ON子句,这也与原始问题中的一致,但是表变量更适合我的需要,因为它只需要访问Oracle表一次而不是每次比较。