我现在一直在使用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
答案 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表一次而不是每次比较。