而且我改了注册表中NLS_LONG 为 AMERICAN_AMERICA.ZHS16CGB231280 了也不行

解决方案 »

  1.   

    alter session set nls_language=american;
      

  2.   

    ORA-01401 inserted value too large for columnCause: The value entered is larger than the maximum width defined for the column. Action: Enter a value smaller than the column width or use the MODIFY option with ALTER TABLE to expand the column width. 
    desc tbname;
    看看长度为多少
      

  3.   

    同意  LGQDUCKY(飘)应该是你的定义的字段长度太短。
      

  4.   

    改成AMERICAN_AMERICA.ZHS16CGB18030不行呀,是不是改成AMERICAN_AMERICA.GB18030
      

  5.   

    我到认为不一定完全是字符集的问题(US7ASCII字符集一样可以保存中文字符),你的字符集选择不匹配时最多是读出来是乱码(写入和读出时),也可能和你用的访问数据库的驱动也有关系(如:ADO、ODBC有不同的版本和不同产商提供的驱动).楼主提供的信息太少了,你的数据环境是怎样的,你在怎样的情况下写入发生上述错误,你已经做过那些尝试,想要得到好的帮助你应该竟可能的提供信息以供想帮助你的人做出正确判断.(提问的智慧http://www.delphibbs.com/delphibbs/dispq.asp?lid=1018713)我没有别的意思,只是希望你可以得到更好的帮助。
      

  6.   

    应该和字符集没关系吧,建议用SQLPLUS插入一条有汉字的记录实验一下
      

  7.   

    那应该不是字段长度的问题,你在把数据库字符级改成US7ASCII英文字符级试下
    看看在SQLPLUS能写入中文吗?
      

  8.   

    set nls_lang=american_america.zhs16gbk
    再看看你的字段字度
      

  9.   

    用SQL PLUS 可以插入,我的程序以前在另一台服务器上没问题,后来换了服务器就不行了
      

  10.   

    谢谢大家了,经过多次的努力,本人发现是ORCAL驱动的问题,现在改用微软的ORCAL 驱动就解决了,说实话,我没感觉ORCAL有那些优点,散分了