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

0jdbc6 JDBCthin ドライバからカスタム オブジェクトの戻り値の型を使用して Oracle PL/SQL プロシージャを呼び出す

    私はついに(他の人の助けを借りて)これに対する答えを見つけました。 3 つの部分で構成されています:

    1 つ目は、

    を使用する必要があることです。
    OracleCallableStatement stmt = (OracleCallableStatement) conn.prepareCall(query);
    

    私が使おうとしていた単純な JDBC CallableStatement ではありません。

    2 番目の部分は、次のように "out" パラメータを登録する必要があったことです:

    stmt.registerOutParameter(2, OracleTypes.STRUCT, "DATA_SUMMARY_TAB");
    

    3 番目の部分は、上記の第 2 部で暗黙のうちに示されていますが、「DATA_SUMMARY_TAB」は大文字でなければならないということでした。小文字で入力すると、次のような不可解なエラー メッセージが表示されます:

    java.sql.SQLException: invalid name pattern: MYTEST.data_summary_tab
    

    oracle.jdbc.oracore.OracleTypeADT.initMetadata(OracleTypeADT.java:553)で oracle.jdbc.oracore.OracleTypeADT.init(OracleTypeADT.java:469)で oracle.sql.StructDescriptor.initPickler(StructDescriptor.java:390)でoracle.sql.StructDescriptor.(StructDescriptor.java:320)

    以上です。

    また、カスタム オブジェクト タイプがどのパッケージにも含まれていないことに注意してください。そうであれば、3 番目のパラメーターを少しハックする必要があるかもしれません。



    1. 最大値phpmysqlのデータベースの列を更新します

    2. PHPおよびmySQLでのユーザーパスワードの変更

    3. ソケットを介してローカルMySQLサーバーに接続します

    4. PostgreSQL-データベースダンプから1つのテーブルを復元する