如果文本数据不超过4000字符的话可以转成varchar2

解决方案 »

  1.   

    的确不能直接转。
    能够操作 LONG 的 SQL 语句: 
    1、Select语句
    2、Update语句中的SET语句
    3、Insert语句中的VALUES语句限制: 
    1、一个表中只能包含一个 LONG 类型的列。
    2、不能索引LONG类型列。
    3、不能将含有LONG类型列的表作聚簇。
    4、不能在SQL*Plus中将LONG类型列的数值插入到另一个表格中,如insert into ...select。
    5、不能在SQL*Plus中通过查询其他表的方式来创建LONG类型列,如create table as select。
    6、不能对LONG类型列加约束条件(NULL、NOT NULL、DEFAULT除外),如:关键字列(PRIMARY KEY)不能是 LONG 数据类型。
    7、LONG类型列不能用在Select的以下子句中:where、group by、order by,以及带有distinct的select语句中。8、LONG类型列不能用于分布查询。
    9、PL/SQL过程块的变量不能定义为LONG类型。
    10、LONG类型列不能被SQL函数所改变,如:substr、instr。
      

  2.   

    试试这个function: 
    create or replace 
    function getlong1( p_rowid in rowid)
    return varchar2
      as
              l_data long;
      begin
             select res into l_data from cr_claimheader where rowid = p_rowid;
              return substr( l_data, 1, 4000 );
      end;
      

  3.   

    pl/sql的教程已经写的很明白了,如果用Pl/sql则使用oracle提供的包即可。如果用其它的,则用对应的过程