alter system set nls_lang='SIMPLIFIED CHINESE_CHINA.ZHS16GBK'

解决方案 »

  1.   

    alter system set nls_lang='SIMPLIFIED CHINESE_CHINA.ZHS16GBK'
    老兄,谢谢你的解答,不过我想知道是不是那这句直接执行就可以了,会不会造成数据库的其他影响,是否需要备份数据。 平平淡淡兄:汉字之间没有空格的。
      

  2.   

    关键是能不能通过调整字符集的方法解决varchar2(4000),只能存600多个汉字的问题。
    谢谢大家。
      

  3.   

    那没办法了吗?varchar(4000)就不够用了。可是字符才600多个。
      

  4.   

    是有影响,这个要鄞重考虑
    sorry,更新字符集是以下:
    UPDATE SYS.PROPS$ SET VALUE$='ZHS16GBK' WHERE NAME LIKE 'NLS_CHAR%';
      

  5.   

    你的系统是什么字符集?尝试用convert函数将中文转码以后再赋给你的变量。
      

  6.   

    你是不是用PreparedStatement来执行插入数据啊,在进行大批量数据插入不要使用PreparedStatement,否则会报错,用statement.execute(sql)应该可以
      

  7.   

    我试了一下, varchar2(4000) ,插入840多个汉字没问题呀
      

  8.   

    不是字符集的问题,在安装ORACLE9I的时候默认字符最长为2000,也就是1000个汉字,你的数据库可能是字符最长也被限制了,而且连2000都没有,所以只能插入那么少的汉字,要重设字符空间的,具体的语句我不记的了,上网查查如何设吧,问题应该就是出在这里。