Я пытаюсь создать функцию 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';