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

simpleJdbcCallがPl/SQLプロシージャを呼び出しています-ORA-22922存在しないLOB値

    Clobインスタンスは、作成に使用する「oracleConnection」に関連付けられており、SimpleJDBCCallはDB呼び出しに別の接続を使用します。 DBの観点からは2つの独立したセッションがあり、それがSimpleJDBCCallによって使用されるセッションにclobが存在しない理由です。

    SimpleJDBCCallが使用する接続は、Clobの作成に使用する必要があります。

    SQLDataを実装し、現在の接続を抽出することで、同様の問題を解決することができました。

    Map<String, Object> values = new HashMap<>();
    values.put("IN_bean_type", new MyBean());
    simpleJdbcCallOperations.execute(values);
    

    MyBean:

    class MyBean implements SQLData {
        ...
        @Override
        public void writeSQL(SQLOutput stream) throws SQLException {
            ...
            Clob clob = ((OracleSQLOutput)stream).getSTRUCT().getJavaSqlConnection().createClob(); //hack to get the current connection
            clob.setString(1, "stringValue");
            stream.writeClob(clob);
            ...
        }
        ...
    }
    


    1. テーブルの主キーを見つけるためのSQLクエリ?

    2. データベースからの4つのランダムデータを表示するクエリ

    3. xmlからoracleDBテーブルへ:問題が発生しています

    4. PDOはローカルホスト(不明なmysqlサーバーホスト)に接続します