我们在将记录插入数据库时遇到以下Oracle错误。
ERROR SQL State: 72000 java.sql.SQLException:
ORA-01483: invalid length for DATE or NUMBER bind variable
该表有两列,类型为varchar2(4000)
。当我尝试将4000个字符插入column1或column2时,它才正确插入。
但是当我尝试向两个列插入4000个字符时,上面的错误就会出现。
Oracle版:11g R1
JDK版本:1.4
非常感谢任何想法/建议。
答案 0 :(得分:0)
如果长度> 1000,您可以使用Clob进行保存 这是解决ORA-01483和ORA-01461的方法
就像:
DefaultLobHandler lobHandler = new DefaultLobHandler();
LobCreator lobCreator = lobHandler.getLobCreator();
lobCreator.setClobAsString(ps, i + 1, (String) column.getValue());
的
答案 1 :(得分:0)
我假设这是关于SQL描述符区域中绑定变量的长度
在声明SQLDA时,您应该在使用前为每个值提供长度
所以它看起来像:
SQLDA *binda;
binda = SQLSQLDAAlloc(SQL_SINGLE_RCTX, 2, NAME_SIZE, IND_NAME_SIZE);
binda->N = 2;
binda->V[0] = (char *) number;
binda->L[0] = (long) sizeof (int);
binda->T[0] = 3;
binda->V[1] = (char *) date;
binda->L[1] = (long) 7; /* oracle datatype 12 size */
binda->T[1] = 12;