0

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

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

4

2 回答 2

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; 
于 2017-10-02T08:32:50.497 回答
0

如果长度 >1000,您可以使用 Clob 保存这是解决 ORA-01483 和 ORA-01461 的一种方法

就像: DefaultLobHandler lobHandler = new DefaultLobHandler(); LobCreator lobCreator = lobHandler.getLobCreator(); lobCreator.setClobAsString(ps, i + 1, (String) column.getValue());

于 2015-12-28T10:18:23.820 回答