Преобразование сжатого BLOB-объекта в CLOB с использованием Java в пределах Oracle - PullRequest
0 голосов
/ 16 марта 2020

Я пытаюсь создать функцию java для извлечения большого двоичного объекта (zip-файла) и преобразования его в сгусток (видимый через SQL). Я не вижу никаких ошибок, но объект java помечен как недействительно в Oracle. Есть ли способ сделать это? (Не 100% о создании этого сгустка, но, похоже, работает в NetBeans) Это Oracle 12 c

CREATE OR REPLACE JAVA SOURCE NAMED UnzipBlob AS
import java.util.zip.InflaterInputStream;
import java.io.*;
import oracle.sql.BLOB;
import oracle.sql.CLOB;
/**
 *
 * @author 
 */
public class UnzipBlob {


    public static CLOB processBlob(BLOB blob) {

        ByteArrayOutputStream bos = null;
        InputStream is = null;
        InflaterInputStream iis = null;
        String retVal = "";

        if (blob != null) {
            try {
                bos = new ByteArrayOutputStream((int) blob.length());
                is = blob.getBinaryStream();
                iis = new InflaterInputStream(is);
                byte[] buf = new byte[1024];
                int count;
                while ((count = iis.read(buf, 0, 1024)) != -1) {
                    bos.write(buf, 0, count);
                }
                retVal = bos.toString();
                iis.close();
                is.close();
            } catch (Exception e) {
            }
        }

        CLOB clob = null;

        try {
        clob = CLOB.getEmptyCLOB();
        clob.setBytes(retVal.getBytes());
        } catch (Exception eee){}

        return clob;
    }

}
/

CREATE OR REPLACE FUNCTION unzip_blob(i_string BLOB) RETURN CLOB AS
  LANGUAGE JAVA NAME 'UnzipBlob.processBlob(oracle.sql.BLOB) return oracle.sql.CLOB';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...