Я пытаюсь преобразовать данные java.sql.Clob
в String
с помощью метода SubString
(этот метод дает хорошую производительность по сравнению с другими). Данные clob, близкие или превышающие 32MB
. КАК мой метод подстроки наблюдения может возвращать только до 33554342
байт.
если данные clob пересекают 33554342 байта, то это исключение ниже sqlORA-24817: Unable to allocate the given chunk for current lob operation
ИЗМЕНИТЬ КОД:
public static void main(String[] args) throws SQLException {
Main main = new Main();
Connection con = main.getConnection();
if (con == null) {
return;
}
PreparedStatement pstmt = null;
ResultSet rs = null;
String sql = "SELECT Table_ID,CLOB_FILE FROM TableName WHERE SOMECONDITION ";
String table_Id = null;
String directClobInStr = null;
CLOB clobObj = null;
String clobStr = null;
Object obj= null;
try {
pstmt = con.prepareStatement(sql);
rs = pstmt.executeQuery();
while (rs.next()) {
table_Id = rs.getString( "Table_ID" ) ;
directClobInStr = rs.getString( "clob_FILE" ) ;
obj = rs.getObject( "CLOB_FILE");
clobObj = (CLOB) obj;
System.out.println("Table id " + table_Id);
System.out.println("directClobInStr " + directClobInStr);
clobStr = clobObj.getSubString(1L, (int)clobObj.length() );//33554342
System.out.println("clobDataStr = " + clobStr);
}
}
catch (SQLException e) {
e.printStackTrace();
return;
}
catch (Exception e) {
e.printStackTrace();
return;
}
finally {
try {
rs.close();
pstmt.close();
con.close();
}
catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
ПРИМЕЧАНИЕ: здесь obj = rs.getObject( "CLOB_FILE");
работает, но я этого не ожидаю. потому что я получаю объект ResultSet
откуда-то как Object. Мне нужно преобразовать и получить данные из CLOB
Любая идея, как этого добиться?
11.2.0.3.0 - 64-bit
- person Giri   schedule 12.06.2015source jar
иjavadoc
дляOJDBC5.jar
. Пожалуйста, поделитесь URL. (в гугле не нашел) - person Giri   schedule 15.06.2015