Oracle
 sql >> Datenbank >  >> RDS >> Oracle

JDBC - Oracle ArrayIndexOutOfBoundsException

In Oracle Metalink (Support-Site von Oracle – Hinweis-ID 736273.1) habe ich festgestellt, dass dies ein Fehler im JDBC-Adapter (Version 10.2.0.0.0 bis 11.1.0.7.0) ist, der beim Aufruf von PreparedStatement mit mehr als 7 Positionsparametern von JDBC ausgeführt wird diesen Fehler werfen.

Wenn Sie Zugriff auf Oracle Metalink haben, besteht eine Möglichkeit darin, dorthin zu gehen und den erwähnten Patch herunterzuladen.

Die andere Lösung ist Workaround - Verwenden Sie benannte Parameter anstelle von Positionsparametern:

INSERT INTO rule_definitions(RULE_DEFINITION_SYS,rule_definition_type,
rule_name,rule_text,rule_comment,rule_message,rule_condition,rule_active,
rule_type,current_value,last_modified_by,last_modified_dttm,
rule_category_sys,recheck_unit,recheck_period,trackable)
VALUES(RULE_DEFINITIONS_SEQ.NEXTVAL,:rule_definition_type,
:rule_name,:rule_text,:rule_comment,:rule_message,:rule_condition,:rule_active,
:rule_type,:current_value,:last_modified_by,:last_modified_dttm,
:rule_category_sys,:recheck_unit,:recheck_period,:trackable)

und dann verwenden

preparedStatement.setStringAtName("rule_definition_type", ...)

usw., um benannte Bind-Variablen für diese Abfrage zu setzen.