TABLE A 
字段a   number(10)
字段b   blob
字段c   number(10)TABLE B 
字段d   number(10)
字段e   blob
现在要将A表中c >100的记录全部插入到B中 如果没有blob字段 可以 
insert into B(d,e) select a,b from A where A.c>100现在有blob字段 又该怎么写呢?

解决方案 »

  1.   

    要用过程和dbms_lob下面例子,你在该改CREATE OR REPLACE package body dbms_lob_test
    isprocedure test
    is
     v_clob clob;
     buffer varchar2(32767);
     amount binary_integer:=1;
     position integer:=1;
     chunksize integer;
    begin
     select staffname into v1 from t1where staffno='1';
     insert into t2 (staffno,staffname ) values ('1',empty_clob());
     select staffname into v2 from t2 where staffno='1';
      
     chunksize :=dbms_lob.getchunksize(v_clob); dbms_lob.open(v1,dbms_lob.lob_readonly);
     dbms_lob.open(v2,dbms_lob.lob_readwrite);
     
     loop dbms_lob.read(v1,amount,position,buffer);
     dbms_lob.write(v2,amount,position,buffer); end loop; dbms_lob.close(v1);
     dbms_lob.close(v2);
     exception
          when no_data_found then
              dbms_output.put_line('End of file');
              dbms_lob.close(v1);
              dbms_lob.close(v2);
          when others then
             dbms_lob.close(v_clob);
             dbms_output.put_line(sqlerrm);
    end;
      
    end;
    /
      

  2.   

    请问是否在同一个实例上,如果是, 可以直接写insert into username1.B(d,e) select a,b from username.A where A.c>100
    如果不是,则通过DBMS_LOB包读写。
    或者exp  imp导入数据到同一个实例上再转入,或者用应用程序读、然后写。
    用DBMS_LOB包,参考楼上的。
    有问题给我消息,明天来看。