sql >> Database >  >> RDS >> Oracle

JDBC - Oracle ArrayIndexOutOfBoundsException

In Oracle Metalink (de ondersteuningssite van Oracle - Note ID 736273.1) ontdekte ik dat dit een bug is in de JDBC-adapter (versie 10.2.0.0.0 tot 11.1.0.7.0) dat wanneer u prepareStatement aanroept met meer dan 7 positionele parameters, JDBC gooi deze fout.

Als je toegang hebt tot Oracle Metalink, dan is een optie om daarheen te gaan en de genoemde patch te downloaden.

De andere oplossing is een tijdelijke oplossing - gebruik benoemde parameters in plaats van positionele parameters:

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)

en gebruik dan

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

enz. om benoemde bindvariabelen voor deze query in te stellen.



  1. Hoe gebruik ik een globale tijdelijke tabel in de Oracle-procedure?

  2. Hoe Oracle EBS Auditing in te stellen

  3. Wanneer moet ik PL/SQL BEGIN...END-blokken nesten?

  4. Hoe maak je een tabel met meerdere buitenlandse sleutels en raak je niet in de war?