java - 从 Oracle 函数调用 Java 函数
问题描述
我在 Oracle 中创建了 Java 类,但不确定如何创建函数来返回值。任何帮助,将不胜感激。
create or replace and compile java source named "ErrorMessage"
as
import java.util.zip.Inflater;
public class ErrorMessage {
public static String uncompressMessage(byte[] cdata, int uncompressedLength){
String uncompData2 = null;
try{
Inflater inflater = new Inflater();
inflater.setInput(cdata);
Byte [] uncompData = new byte[uncompressedLength];
int n = inflater.inflate(uncompData);
uncompData2 = uncompData.toString();
inflater.end();
}catch (Exception e){
e.getMessage();
}
return uncompData2;
}
}
create or replace
function getErrorMessage(msgdata blob, msgdatalength integer)
return varchar2
as language java
name 'ErrorMessage.uncompressMessage(byte[],int)
return java.lang.String';
解决方案
就像是:
create or replace and compile java source named "ErrorMessage"
as
import java.util.zip.Inflater;
import java.lang.Byte;
import java.sql.Blob;
public class ErrorMessage {
public static String uncompressMessage( Blob data, int uncompressedLength ){
String uncompData2 = null;
try{
final long size = data.length();
final byte[] cdata = data.getBytes( 0L, (int) size );
Inflater inflater = new Inflater();
inflater.setInput( cdata );
byte[] uncompData = new byte[uncompressedLength];
int n = inflater.inflate(uncompData);
uncompData2 = new String( uncompData, "UTF-8" );
inflater.end();
}catch (Exception e){
e.getMessage();
}
return uncompData2;
}
}
/
create or replace function getErrorMessage(msgdata blob, msgdatalength number) return varchar2
as language java
name 'ErrorMessage.uncompressMessage(java.sql.Blob,int) return java.lang.String';
推荐阅读
- swift - Launching ViewController as sheet from windowDidLoad
- sql - Get the name of an ID for two separate columns
- java - SparkJava 可变参数个数
- javascript - 按钮.onclick=功能;没有出现在html中
- node.js - NodeJS 事件循环执行顺序(process.nextTick 和 promise)
- qt - 来自 qstring 的文本有 &
- git - 有没有办法允许通过 git 从 bitbucket/任何其他提供商访问特定文件,以维护所有人代码文件的隐私?
- javascript - 在 Modal 的子组件中设置时,不触发 BackAndroid/BackHandler 事件侦听器
- c++ - Qt5以一种形式从另一种形式访问数据
- javascript - 如何强制 jQuery 更改 CSS 值本身,而不是添加内联样式?