DBLink中CLOB字段的处理

DBLink中,对于CLOB字段的处理需要相对比较特殊些。

  1. 不做任务处理,例如执行“SELECT MODE_CODE,TRANSFORM_CHANGE_CONTENT from PROD_INTERRUPTION_MODE@LINK2SERVER516 WHERE ROWNUM<=10”,其中“TRANSFORM_CHANGE_CONTENT”为CLOB字段,则会报“ORA-22992: cannot use LOB locators selected from remote tables”的错误。
  2. 采用临时表方式实现对LOB字段的选取:
    创建一个临时表“create global temporary table TMP_TBL_MODE(
    MODE_CODE VARCHAR2(16),
    TRANSFORM_CHANGE_CONTENT CLOB
    )on commit delete rows;”,
    再执行“INSERT INTO TMP_TBL_MODE SELECT MODE_CODE,TRANSFORM_CHANGE_CONTENT from PROD_INTERRUPTION_MODE@LINK2SERVER516;”后,临时表中就将对应的数据选取过来了,最后再通过执行“SELECT * from TMP_TBL_MODE;”,即可查看到结构,验证OK

  3. 采用将CLOB转换为VARCHAR的方式实现:
    首先需要用到函数“dbms_lob.substr( clob_column, for_how_many_bytes, from_which_byte );”
    通过创建如下视图:
    CREATE OR REPLACE VIEW DBLINK_V_MODE_TET AS
      SELECT MODE_CODE, dbms_lob.substr(TRANSFORM_CHANGE_CONTENT,4000,1) TRANSFORM_CHANGE_CONTENT
        FROM PROD_INTERRUPTION_MODE
       WHERE ROWNUM <= 10;
    通过执行“SELECT MODE_CODE,TRANSFORM_CHANGE_CONTENT from DBLINK_V_MODE_TET@LINK2SERVER516;”,即可实现查看到结果,验证OK


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值