Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

simpleJdbc Gọi thủ tục Pl / SQL - ORA-22922 giá trị LOB không tồn tại

Cá thể Clob được gắn với 'oracleConnection' mà bạn sử dụng để tạo nó và SimpleJDBCCall sử dụng một kết nối khác cho lệnh gọi DB. Có hai phiên độc lập theo quan điểm DB và đó là lý do tại sao khối không tồn tại trong phiên được SimpleJDBCCall sử dụng.

Kết nối mà SimpleJDBCCall sử dụng phải được sử dụng để tạo Clob.

Tôi đã quản lý để giải quyết một vấn đề tương tự bằng cách triển khai SQLData và bằng cách trích xuất kết nối hiện tại:

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. bao nhiêu CPU một phiên tiêu thụ tại một thời điểm nhất định trong oracle

  2. Chọn tối thiểu. ba giá trị của một bản ghi trong một bảng khác với một JOIN

  3. Lỗi (ORA-00923:Không tìm thấy từ khóa FROM ở nơi mong đợi)

  4. Tìm hiểu ký hiệu tiền tệ mà phiên của bạn sử dụng trong Oracle

  5. Làm thế nào để kiểm tra xem tệp có tồn tại trong PL / SQL hay không?