各位好,
    最近碰到一个问题,一直没有解决。希望高手指点一二。
    
    是这样的,之前我用的数据库9i 版本是0.1的。在一个字段里面放入了1000多个汉字,此字段类型设定为varchar(4000),数据库字符型是默认的gbk类型。按常理来说,放进去应该没有问题,但是出现了long 那个问题,也就是超出长度。
    后来在网上查了一些资料,其中一位大侠说这是9i的一个bug,即在1000-2000之内的汉字都放不进去,而1000以下和2000-4000都可以放进,(我没有考证其是否正确),将9i的版本换成0.8的 就可以解决。    我没有去升级9i的版本,但是我认为既然9i的0.8可以解决 那么高版本的10g 应该也能搞的定。
    
    于是我将9i换成10g,还是原来的类型和字符型,结果,还是放不进去。
    
    我又不想把字段类型换成clob或者blob,这个问题应该怎么搞定? 
    
    谢谢指教!
    

解决方案 »

  1.   

    不好意思,我少打了个2字 哈额 数据类型是varchar2(4000) 最大了  另 oracle里面貌似没有varchar类型  汗一个··
      

  2.   

    varchar的类型当然是有的喽我的oracle9.2,1000多个中文字没问题
     create table test (user_name varchar2(4000));9iSQL> 
      1  declare
      2     l_name varchar2(4000);
      3  begin
      4      l_name := lpad('', 1200, '马');
      5      insert into test values(l_name);
      6      commit;
      7* end;
    9iSQL> /PL/SQL procedure successfully completed.
      

  3.   

    上面的例子有点问题,看这个
    9iSQL> declare
      2      l_name varchar2(4000);
      3  begin
      4      l_name := lpad('x', 1200, '马');
      5      insert into test values (l_name);
      6      commit;
      7  end;
      8  /PL/SQL procedure successfully completed.
      

  4.   

    oracle里面貌似没有varchar类型
    怎么没有啊?varchar 是varchar2的同义词varchar是所有的数据库都通用,而varchar2是oracle数据特用的,oralce为了与别的数据库一致,也兼容了varchar字段类型
      

  5.   

    在10g里已经不建议只用varchar了,用varchar建立的字段好像都会转成varchar2你这里是直接sqlplus里使用的时候有问题,还是通过你的应用程序插入数据的时候有问题。