Oracle
 sql >> Base de données >  >> RDS >> Oracle

JDBC - Oracle ArrayIndexOutOfBoundsException

Dans Oracle Metalink (site de support d'Oracle - Note ID 736273.1), j'ai trouvé qu'il s'agissait d'un bogue dans l'adaptateur JDBC (version 10.2.0.0.0 à 11.1.0.7.0) que lorsque vous appelez readyStatement avec plus de 7 paramètres positionnels, JDBC lancer cette erreur.

Si vous avez accès à Oracle Metalink, une option consiste à y aller et à télécharger le correctif mentionné.

L'autre solution est une solution de contournement :utilisez des paramètres nommés au lieu de paramètres positionnels :

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)

puis utilisez

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

etc. pour définir des variables de liaison nommées pour cette requête.