现象:
本人一直使用oracle9i的透明网关与sqlserver数据库通信,使用情况一直正常;
后因系统升级,改用oracle10g的数据库,成功配置透明网关后,直接在SQL/PLUS中通过数据链接获取sqlserver数据时正常,但在oracle存储过程中通过数据链接使用该透明网关获取sqlserver数据时,不能获取到行且不报错;
暂时只好使用10g的数据库,访问9i上的透明网关来获取sqlserver上的数据,非常麻烦;
经仔细排除,不是权限问题,也不是配置文件问题
问:如何解决该问题,有哪个版本的10g数据库可以保证存储过程正常访问sqlserver数据库?
是否需要打补丁?要打哪些补丁?
附:9i数据库版本:Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
CORE 9.2.0.1.0 Production
TNS for 32-bit Windows: Version 9.2.0.1.0 - Production
NLSRTL Version 9.2.0.1.0 - Production
Oracle Transparent Gateways 9.2.1.0
10g数据库版本:Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - Prod
CORE 10.1.0.2.0 Production
TNS for 32-bit Windows: Version 10.1.0.2.0 - Production
NLSRTL Version 10.1.0.2.0 - Production
Oracle Transparent Gateways 10.1.0.2.0

解决方案 »

  1.   

    字符集相同;
    是要在\tg4msql\admin\initlinkname.ora文件里加上"AutoTranslate=No"吗?我按你的办法加了这么一行进去,还是不行呀
      

  2.   

    没人顶了?把自己绕着解决的办法给大家参考一下:
    1、对sqlserver数据库表的字符字段用取同义词后column%type方式定义一个变量;
    2、执行查询将字段值赋给变量;
    3、此时变量在跟踪调试中显示为空,将这个空值做trim操作后赋值给一个varchar2变量,得到实际目标值;
    4、对于非存储过程的客户端程序操作,只能先取到客户端,然后在客户端程序分别做trim操作;
    哪位老大还有好点的办法,最好是打补丁或修改配置参数实现跟9i一样使用标准SQL的,欢迎拿来讨论呀