0

データベースにレコードを挿入しているときに、以下のOracleエラーが発生します。

ERROR SQL State: 72000 java.sql.SQLException: 
ORA-01483: invalid length for DATE or NUMBER bind variable

テーブルには、タイプが。の2つの列がありますvarchar2(4000)。column1またはcolumn2のいずれかに4000文字を挿入しようとすると、正しく挿入されます。

しかし、両方の列に4000文字を挿入しようとすると、上記のエラーが発生します。

Oracleバージョン:11g R1
JDKバージョン:1.4

任意の考え/アドバイスは大歓迎です。

4

2 に答える 2

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 に答える
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 に答える