问题描述:下边这个代码执行错误,报ora22922错误。 其中YS_DCB11表中有某个字段(dat)为大字段,而DCB11中没有大字段,这两个表都是通过链路访问的。是不是包含大字段的表都不能通过链路访问?
select
        A.JH JH
       ,A.JB JB
       ,A.CSRQ CSRQ
       ,A.CSDWDM CSDWDM
       ,A.JCDM JCDM
       ,A.YQMC YQMC
       ,A.YQXH YQXH
       ,A.YQBH YQBH
       ,A.JXGJDM JXGJDM
       ,A.JXGJMC JXGJMC
       ,A.SJSD SJSD
       ,A.SCSD SCSD
       ,A.BZ BZ
       ,A.LRSJ LRSJ
  from  YS_DCB11  A left  join DCB11  dst_DCB11 on  dst_DCB11.JH=A.JH and dst_DCB11.CSRQ=A.CSRQ and dst_DCB11.JXGJDM=A.JXGJDM  where dst_DCB11.JH is null and  dst_DCB11.CSRQ is null and  dst_DCB11.JXGJDM is null;
下边这个执行正确。但不知这两处代码有何区别。
select
        A.JH JH
       ,A.JB JB
       ,A.CSRQ CSRQ
       ,A.CSDWDM CSDWDM
       ,A.JCDM JCDM
       ,A.YQMC YQMC
       ,A.YQXH YQXH
       ,A.YQBH YQBH
       ,A.JXGJDM JXGJDM
       ,A.JXGJMC JXGJMC
       ,A.SJSD SJSD
       ,A.SCSD SCSD
       ,A.BZ BZ
       ,A.LRSJ LRSJ
  from  YS_DCB11  A , DCB11  B
  where  B.JH(+)=A.JH 
  and B.CSRQ(+)=A.CSRQ 
  and B.JXGJDM(+)=A.JXGJDM  
  and B.JH is null
  and  B.CSRQ is null 
  and  B.JXGJDM is null;

解决方案 »

  1.   

    1、oracle不允许直接通过dblink访问远程表中的lob字段
    2、如果需要访问,可以新建立一个全局临时表,插入后再访问,如:
    create global temporary table mytmp(col1 clob);
    insert into mytmp select col1 from table1@dblink1;
      

  2.   


    oracle不允许直接通过dblink访问远程表中的lob字段?之前还不知道呢?没环境所以没怎么接触到这个。
    学习了。
      

  3.   

    我知道啊,但我没有访问LOB字段啊,我只访问了这个表的其他字段。这样不行吗?