Oracle通过Gateways链接SQLServer后查询报错:ORA-00904、ORA-00258、ORA-02063

环境

  • Oracle11G
  • SqlServer 2008 R2
  • 服务器Server2008

问题描述

  • 使用Gateways建立了DBLINK后,Oracle查询Sqlserver的数据经常报错。
  • 查询某些字段报错"ORA-00904:标识符无效"。
  • 查询"Select * from XXX;"ORA-00258:多机种服务数据类型转换出现错误",报错"ORA-02063:紧挨着line(起自msdb)"。

ORA-00904:标识符无效问题原因

  • Oracle执行语句时会将字段名全部作大写转换处理,比如Select userName from table;Oracle后台执行的是SELECT USERNAME FROM TABLE;
  • 所以除非SQLSERVER的字段名称全部大写,否则会报错,因为找不到对应的字段。

ORA-00904:标识符无效问题解决方案

方法一:配置Oracle,关闭自动大写转换。

  • 建议不要通过此种方式,有可能导致其他项目出现问题。

方法二:Oracle写在""中的字段不会做转换处理,可以将字段写在""中

  • 比如Select "userName" from table;Oracle后台执行的是SELECT userName FROM TABLE;

"ORA-00258:多机种服务数据类型转换出现错误"与"ORA-02063:紧挨着line(起自msdb)"问题原因

  • Oracle与SQLServer有很多数据类型不一致,无法转换。
  • 如果需要此类字段,可以查询时手动转换成nvarchar。

你可能感兴趣的:(Oracle通过Gateways链接SQLServer后查询报错:ORA-00904、ORA-00258、ORA-02063)