在ORACLE提取SQLSERVER的表报ORA-600 [HO define: Long fetch]

问题现象:

        上午配置了11G RAC到SQLSERVER的DBLINK,具体可以参见 ORACLE 11G RAC 访问SQLSERVER-CSDN博客 ,可以正常的访问SQLSERVER的表,

但下午开发人员就反馈执行
select t."cardNo",t."checktype",t."itemName",t."categoryName" 

    from fschk_info@pacsdblink t

where t."cardNo"='510212194004152146'

就报错:

ORA-00600: internal error code, arguments: [HO define: Long fetch], [l, [, [, [], [l, [l, [l, [l, [l, [l, [

具体见下图:

问题分析:

        select (*) from fschk_info@pacsdblink t where t."cardNo"='510212194004152146';都没有问题,

        select t."cardNo",t."checktype",t."itemName" from fschk_info@pacsdblink t where t."cardNo"='510212194004152146';

        也是没有问题

        select t."cardNo",t."checktype",t."categoryName" 

        from fschk_info@pacsdblink t where t."cardNo"='510212194004152146';

        也就是,t."itemName",t."categoryName"  这两个字段不同时出现,就没有问题

        

        检查字段定义:

        原来 itemName,categoryName 这两个字段类型为 long,而ORACLE在一个表中只允许有一个字段为LONG类型,因此,同时查询多个LONG字段,就会报这个 ORA-600 [HO define :long fetch]的错误,当然,在ORACLE本身是不可能创建这种表,只有来自于其他非ORACLE的库,才会出现这种情况,该报错,已经在ORACLE MOS上已经有文档描述,具体见:

问题解决:

         如果不修改源端的定义,就只能一次查询不超过一个LONG字段。

        根本的解决办法,就是修改 源端,不要使用LONG类型。

        经过分析,发现源端是一个视图,源表对应的字段为VARCHAR(MAX),修改视图定义中两个字段:

convert(varchar(400),substring(itemName,1,400)),

convert(varchar(400),substring(categoryName,1,400)),

之后,最终定义如下:

     

之后,再去执行查询,不再报错:

  

好了,按照惯例:为了方便交流,我建立了一个微信群:水煮数据库,主要交流日常工作中用到的数据库问题,包含但不限于:ORACLE,PG,MYSQL,SQLSERVER,OB,TIDB,达梦,TDSQL,OPENGAUSS,人大金仓,GBASE等等,如果有兴趣交流,可以加我微信:zq24803366, 我可以拉你入群。
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/cqsztech/article/details/138354369

  • 12
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值