各大老师好,请教一个问题.我设置了一个oracle字段,varchar(3000),然后插入一条数据长度才1000,就报错了.如:net.sf.hibernate.exception.GenericJDBCException: Could not execute JDBC batch update
Caused by: java.sql.BatchUpdateException: ORA-01461: can bind a LONG value only for insert into a LONG column如果长度改成500就没问题.如何解决这个问题?请给个简便的方法,已经这是已经上线的系统,不适合再做大的改动.
oracle的长度大小是不是几K的限制啊,可不可以通过调oracle参数来修改.紧急求助,感谢大家.

解决方案 »

  1.   

    "如果长度改成500就没问题",是指插入数据的长度还是varchar2的长度?
      

  2.   

    插入数据的长度为500.varchar2的长度还是3000
      

  3.   

    插入数据的是不是有非ascii的字符?试一下把varchar2改称nvarchar2试一下
      

  4.   

    oracle9i中varchar2最多4000个字节 10以上版本好像没有限制吧
      

  5.   

    10g还是
     VARCHAR2(size [BYTE | CHAR])
     Variable-length character string having maximum length size bytes or characters. Maximum size is 4000 bytes or characters, and minimum is 1 byte or 1 character. You must specify size for VARCHAR2.BYTE indicates that the column will have byte length semantics; CHAR indicates that the column will have character semantics.
     
      

  6.   

    插入的是1000个字符,还是不行,varchar2这种字段,内容的大小有没有字节的限制啊
      

  7.   

    varchar2最大size是4000,这是没法改的。要存储大文本,可以采用CLOB,其最大尺寸为4G。
    但你的情况应该不是字段问题,varchar2(4000)足够放1000字节的文本。问题应该在你的客户端。你的sql怎么提交的?同样的sql在服务器上执行结果如何?
      

  8.   

    把你应用中的ojdbc4.jar包换成oracle数据库中的ojdbc14.jar包试试。
    Caused by: java.sql.BatchUpdateException: ORA-01461: can bind a LONG value only for insert into a LONG column 
    以前看见上面这句话,我就是这样解决的。
      

  9.   

    把你应用中的ojdbc14.jar包换成oracle数据库带的ojdbc14.jar包试试。 
      

  10.   

    改成clob呢?有数据了,就只能比varchar2大