关于CLOB字段插入到LONG中的问题,急!
一张表a1有一个clob字段,另一张表a2有一个long型字段,其他结构完全一样
我要将前表数据插入后表
INSERT        INTO a2    SELECT *
    FROM        a1;发现clob中如果文本很长(大约超过1800多个中文字符),在long中会被截断,有什么办法解决这个问题?

解决方案 »

  1.   

    ORACLE提示:不要在新创建的表中使用数据类型为 LONG 的数据列,而应使用 LOB 数据类型(CLOB,NCLOB)作为替代。LONG 数据类型只用于向后兼容[backward compatibility]。 Oracle 建议用户将现有的 LONG 数据列转换为 LOB 类型。LOB 数据类型所受的限制远少于 LONG 类型。此外,Oracle 各个版本中均对 LOB 功能有所加强,而关于 LONG 的功能已经不再更新。
      

  2.   

    下面是我从网上搜到的点资料LONG和LONG RAW 
    我们可以使用LONG类型来存储变长的字符串。除了LONG类型的最大长度是32760字节之外,LONG类型和VARCHAR2很相像。我们还可以使用LONG RAW类型来存储二进制数据或二进制字符串。LONG RAW和LONG类似,但是它不会被PL/SQL解析。LONG RAW的最大长度也是32760字节。从9i开始,LOB类型变量可以与LONG和LONG RAW类型交换使用。Oracle推荐将LONG和LONG RAW都对应的转换成COLB和BLOB类型。我们可以将LONG类型的值插入字段类型为LONG的数据库中,因为在数据库中LONG的长度是2**31字节;但是,不可以从LONG字段中检索超过32760字节的字符放到LONG类型变量中去。同样,对于LONG RAW类型来说,这条规则同样适用,在数据库中它的最大长度也是2**31字节,而变量的长度在32760字节以内。LONG类型字段可以存储文本、字符数组或短文等。我们可以对LONG字段进行UPDATE、INSERT和SELECT操作,但不能在表达式、SQL函数调用、或某个SQL子句(如:WHERE、GROUP BY和CONNECT BY)中使用它。注意:在SQL语句中,PL/SQL会将LONG类型的值绑定成VARCHAR2类型,而不是LONG。但是,如果被绑定的VARCHAR2值超过4000个字节,Oracle会自动地将绑定类型转成LONG,但LONG并不能应用在SQL函数中,所以,这时我们就会得到一个错误消息。
      

  3.   

    恩 不过现在有这个需求 从long插入clob没问题 但是反过来数据就会被截断 所以想问问有没解决办法??
      

  4.   

    基本上不用long  用lob替代
      

  5.   

    用程序实现吧  从CLUB取出来,然后插入long