Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

simpleJdbcCall memanggil prosedur Pl/SQL -- nilai LOB ORA-22922 tidak ada

Instance Clob terikat ke 'oracleConnection' yang Anda gunakan untuk membuatnya dan SimpleJDBCCall menggunakan koneksi lain untuk panggilan DB. Ada dua sesi independen dari sudut pandang DB dan itulah alasan mengapa clob tidak ada di sesi yang digunakan oleh SimpleJDBCCall.

Koneksi yang digunakan SimpleJDBCCall harus digunakan untuk pembuatan Clob.

Saya telah berhasil memecahkan masalah serupa dengan menerapkan SQLData dan dengan mengekstrak koneksi saat ini:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Instalasi ROracle ::Tidak dapat memuat kesalahan objek bersama

  2. GROUP BY / kebingungan fungsi agregat dalam SQL

  3. Oracle DB setara dengan pembaruan kunci duplikat

  4. Oracle tertinggal antara komit dan pilih

  5. mengonversi nilai yang dipisahkan koma menjadi beberapa baris