繁体   English   中英

SQL Server 2008与Oracle 11g的联接

[英]SQL Server 2008 JOIN with Oracle 11g

我已成功将Oracle 11g数据库链接到SQL Server2008。我可以在显示Oracle数据的SQL Server中运行一个简单查询:

SELECT PRODUCT_CODE
FROM [ORACLE-LINK]..ORACLE_SCHEMA.PRODUCTS_TABLE

这确实符合我的期望。

当我尝试做一个简单的联接时,问题就来了:

SELECT ProductName, [ORACLE-LINK]..ORACLE_SCHEMA.PRODUCTS_TABLE.PRODUCT_NAME
FROM SqlServer_table
INNER JOIN [ORACLE-LINK]..ORACLE_SCHEMA.PRODUCTS_TABLE
ON SqlServer_table.Product_ID=[ORACLE-LINK]..ORACLE_SCHEMA.PRODUCTS_TABLE.PRODUCT_CODE

这会在JOIN语句的Oracle部分导致“无法绑定多部分标识符”错误。 从研究中我知道语法必须准确,而且我想我已经尝试了几乎所有排列。 也许SQL Server设置/注册表中有某些内容...

遵循@shiva的有用建议,我使用别名重新格式化了查询。 这引发了服务器排序规则不匹配错误,比我之前得到的“多部分标识符”消息更能说明问题。 事实证明,联接的列具有不同的排序规则(SQL_Latin1_General_CP1_CI_AS与Latin1_General_CI_AS)。 在查询的JOIN AS末尾添加一个简单的COLLATE可以解决此问题。

您是否尝试过别名表名称? 像这样

SELECT SqlSvr.ProductName AS Sql_ProductName
    , Orcl.PRODUCT_NAME AS Orcl_ProductName
FROM SqlServer_table AS SqlSvr
  INNER JOIN [ORACLE-LINK]..ORACLE_SCHEMA.PRODUCTS_TABLE AS Orcl
  ON SqlSvr.Product_ID = Orcl.PRODUCT_CODE

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM