sql >> Databáze >  >> RDS >> Oracle

simpleJdbcCall volající proceduru Pl/SQL -- ORA-22922 neexistující hodnota LOB

Instance Clob je svázána s 'oracleConnection', které používáte k jejímu vytvoření, a SimpleJDBCCall používá jiné připojení pro volání DB. Z pohledu DB existují dvě nezávislé relace a to je důvod, proč clob neexistuje v relaci používané SimpleJDBCCall.

Připojení, které používá SimpleJDBCCall, musí být použito pro vytvoření Clobu.

Podařilo se mi vyřešit podobný problém implementací SQLData a extrahováním aktuálního připojení:

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. Vysoká dostupnost při nízkém rozpočtu – nasazení minimálního klastru MySQL Galera se dvěma uzly

  2. Mazání řádků v datovém úložišti podle časového rozsahu

  3. SQL Jak nahradit hodnoty select return?

  4. Jak najít závislosti uvnitř balíčku Oracle?