dblink之后报错:ORA-00997: illegal use of long datatype

经网上查阅问题后,发现说是oracle11g基本不建议使用long类型,所以会报错,网上给的解决方式是:通过to_lob方式将数据转换,但是我在尝试中发现报错:ora-22992:无法使用从远程表选择的 LOB 定位符
经查阅资料后发现是clob字段本身就不支持dblink的方式,此时一般情况下会通过导入导出的方式,将源数据插入到目标表中,但是我此时想到了一种方式,使用游标和存过的方式,将数据一条一条的读取,一条一条的插入。
注意,此种方式只限制于源数据数据量不大的情况下,一旦数据量较大,还是建议用导入导出的方式处理数据。我将存过的代码放在了下面:
--(在使用的时候,请将所有注释都删除)
create or replace procedure 存过名 IS
  CURSOR a IS
    select * from “table_name”@dblink;--dblink连接的表名,table_name为表名,dblink为在oracle配置的dblink的连接
  aa a%ROWTYPE;
BEGIN
  OPEN a;
  LOOP
    BEGIN
      FETCH a  INTO aa;
      EXIT WHEN a%NOTFOUND;
      INSERT INTO target_table_name--目标表表名
      VALUES
        (aa.字段1,
         aa.字段2);
    EXCEPTION
      WHEN OTHERS THEN
        CONTINUE;
    END;
  END LOOP;
END;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值