sql >> データベース >  >> RDS >> Oracle

JDBC-Oracle ArrayIndexOutOfBoundsException

    Oracle Metalink(Oracleのサポートサイト-ノートID 736273.1)で、これはJDBCアダプタ(バージョン10.2.0.0.0から11.1.0.7.0)のバグであり、7つを超える位置パラメータを使用してpreparedStatementを呼び出すと、JDBCがこのエラーをスローします。

    Oracle Metalinkにアクセスできる場合、1つのオプションは、そこに移動して、前述のパッチをダウンロードすることです。

    もう1つの解決策は回避策です。位置パラメータの代わりに名前付きパラメータを使用してください:

    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)
    

    次に

    を使用します
    preparedStatement.setStringAtName("rule_definition_type", ...)
    

    など、このクエリの名前付きバインド変数を設定します。



    1. 結果を除算するためのSQLの10進値

    2. SQLServer2012/2014での隠れたパフォーマンスと管理性の向上

    3. PostgreSQLは部分インデックスを使用しません

    4. Oracle D2kForms6iのフォーム画面の更新/更新