Oracle错误ORA-01483:DATE或NUMBER绑定变量的长度无效

时间:2012-07-31 04:19:43

标签: sql oracle

我们在将记录插入数据库时​​遇到以下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

非常感谢任何想法/建议。

2 个答案:

答案 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;