问题:多数据库间进行数据的导入和导出,可以通过数据库链的方式实现,比如如下的语句:
insert into t_project
select * from t_project@kf
kf:数据库链的名称。
这种数据导入和导出十分的方便,但是对于LONG类型的字段进行这种操作时,则无法实现,当表中包含LONG字段,通过这种方式导数据会报错:ORA-00997: illegal use of LONG datatype。
原因是由于LONG类型字段不能通过这种方式进行导数据。
解决的办法:通过Cursor的方式实现
通过将数据集保存到Cursor中,可以实现LONG类型字段的导出和导入,下面是一个通过存储过程中Cursor来实现数据导入的示例。
CREATE OR REPLACE PROCEDURE temp
AS
CURSOR c_flag is select proid,proname,xmltree from t_project@kftest;
BEGIN
open c_flag;
loop
fetch c_flag into the_cursor;
exit when c_flag%NOTFOUND;
insert into t_project values(the_cursor.proid,the_cursor.proname,the_cursor.xmltree);
end loop;
close c_flag;
commit;
end;
其中:xmltree为LONG类型的字段
通过这种方式可以方便的实现LONG类型字段在多数据库间的导入和导出。