经网上查阅问题后,发现说是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;
dblink之后报错:ORA-00997: illegal use of long datatype
最新推荐文章于 2024-04-23 20:32:04 发布