sql >> Database >  >> RDS >> Oracle

simpleJdbcCall die Pl/SQL-procedure aanroept -- ORA-22922 niet-bestaande LOB-waarde

De Clob-instantie is gekoppeld aan de 'oracleConnection' die u gebruikt om deze te maken en de SimpleJDBCCall gebruikt een andere verbinding voor de DB-aanroep. Er zijn twee onafhankelijke sessies vanuit het oogpunt van DB en dat is de reden waarom de clob niet bestaat in de sessie die door SimpleJDBCCall wordt gebruikt.

De verbinding die de SimpleJDBCCall gebruikt, moet worden gebruikt voor het maken van de Clob.

Ik ben erin geslaagd een soortgelijk probleem op te lossen door SQLData te implementeren en de huidige verbinding te extraheren:

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

MijnBean:

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. Wat zijn door de klant opgestelde verklaringen?

  2. Matchrecords ophalen over meerdere tabellen in MySQL

  3. Selecteer willekeurige rij uit MySQL (met waarschijnlijkheid)

  4. Verwijderen met linker outer join in Postgres