sql >> Database teknologi >  >> RDS >> Oracle

simpleJdbcCall kalder Pl/SQL-procedure -- ORA-22922 ikke-eksisterende LOB-værdi

Clob-forekomsten er knyttet til 'oracleConnection', som du bruger til at oprette den, og SimpleJDBCCall bruger en anden forbindelse til DB-kaldet. Der er to uafhængige sessioner fra DB-synspunktet, og det er grunden til, at klobben ikke eksisterer i den session, der bruges af SimpleJDBCCall.

Forbindelsen, som SimpleJDBCCall bruger, skal bruges til Clob-oprettelse.

Jeg har formået at løse et lignende problem ved at implementere SQLData og ved at udtrække den aktuelle forbindelse:

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. Bedste praksis for paginering i Oracle?

  2. Opdater understreng af en kolonne

  3. PHP Fatal fejl:Kald til udefineret funktion mssql_connect()

  4. Laravel til SQL Server (sqlsrv). [PDOException] kunne ikke finde driveren