我在一个名为Info_Tab的表上建了一个varchar2(4000)的字段description,使用游标来重复执行下面这句更新语句:update Info_Tab set description = description || info_description where ...(info_description 是一个varchar2变量,长度不定)语句上是没问题,但随着执行久了,description的varchar2(4000)的长度就不够了,然后就会出错,请问这个有什么好的解决方法吗?我试过将description定义为long,但定义为long之后就无法使用update语句了,我的数据库是8i,似乎无法使用CLOB和BLOB类型,也用不了TO_CLOB这个函数。这个问题十分紧急,请各位高手帮个忙吧~!!!谢谢了~!!!

解决方案 »

  1.   

    这样子varchar2肯定不够长拉!只能4000字节而已。
    long应该可以,我知道在pl/sql long可以当字符串用。能用instr等等
      

  2.   

    楼上的,当description为long型的时候,是无法使用这条SQL语句的:update Info_Tab set description = description || info_description where ...
      

  3.   

    能够操作 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。