数据量大吗?如果不太大可以考虑先用PL/SQL Table 保存起来再排序后插入数据。
数据量大的话可以考虑使用临时表

解决方案 »

  1.   

    这里我给出一个例子
    Oracle 8.1.6 以上
    我把从文件中读取的部分去掉了,只掩饰主要的部分
    SQL> create table t (name varchar2(10));Table created.SQL>
    SQL> create type obj_t as object (name varchar2(10));
      2  /Type created.SQL>
    SQL> create type tab_t as table of obj_t;
      2  /Type created.SQL>
    SQL> create procedure fill_t
      2  as
      3    ltab tab_t := tab_t();
      4  begin
      5    -- 以下填充数据,省略了从文件中读,这里直接赋值了
      6    ltab.extend;
      7    ltab(ltab.last) := obj_t('Jack');
      8    ltab.extend;
      9    ltab(ltab.last) := obj_t('Tack');
     10    ltab.extend;
     11    ltab(ltab.last) := obj_t('Alice');
     12    insert into t select * from
     13     (select * from table(cast(ltab as tab_t)) order by name);
     14    commit;
     15  end;
     16  /Procedure created.SQL>
    SQL> exec fill_t;PL/SQL procedure successfully completed.SQL>
    SQL> select * from t;NAME
    ----------
    Alice
    Jack
    TackSQL>
    SQL> drop procedure fill_t;Procedure dropped.SQL> drop type tab_t;Type dropped.SQL> drop type obj_t;Type dropped.SQL> drop table t;Table dropped.SQL>
      

  2.   

    oracle数据库的表中数据无所谓排序。
    还是你想要把读出的数据加上一个排序字段后插入表中?