Как получить полное шестнадцатеричное значение из типа данных blob?

Я пытаюсь получить шестнадцатеричное значение из столбца BLOB из Java, используя следующий запрос:

SELECT RAWTOHEX(UTL_RAW.CAST_TO_VARCHAR2(DBMS_LOB.SUBSTR(thumbnail, 2000,1))) thumbnail FROM thumbnails  

если я использую следующий запрос:

SELECT LENGTH(thumbnail) FROM thumbnails 

длина всех миниатюр превышает 6000 байт

первый запрос работает, потому что я даю ему 2000 байт, потому что это размер типа файла varchar2:

Как изменить запрос, чтобы получить все эскизы (все символы), а не только 2000 символов? или другой способ получить шестнадцатеричное полное значение из большого двоичного объекта?


person Jorge Avila    schedule 07.04.2016    source источник


Ответы (1)


Я решил эту проблему без использования SQL, только с помощью Java: запрос будет выполняться нормально:

String query = "SELECT thumbnail FROM Thumbnails"
ResultSet rs = DBManager.getInstance().execute(query);

и получите значение как Blob в Java:

Blob thumbnail;
if (rs.next()){
    thumbnail = rs.getBlob("thumbnail");
    byte[] blobBytes = thumbnail.getBytes(1, (int)thumbnail.length());
    return Hex.encodeHexString(blobBytes).toUpperCase();
}

очень простой...

person Jorge Avila    schedule 08.04.2016