13232163126
超级会员
超级会员
  • 发帖数30
  • QQ2778146585
  • 金币217两
  • 威望336点
  • 钻石0枚
  • 注册日期2022-08-25
  • 最后登录2025-05-20
阅读:89回复:0

[资源分享]在oracle写java源然后创建自定义函数

楼主#
更多 发布于:2025-05-12 17:42
    4gl是支持java工具类的调用,但本身语法和java并不相通,一般只能在4gl中CALL调用java类的方法,所以要实现一些4gl做不到的功能,需要把另外去写java并打包成jar导进系统环境中,十分麻烦。
    我们可以用oracle自定义函数,把java写进去oracle的源,在函数中引用java源,在4gl中用sql实现对应的功能。
    下面是一个例子,实现HmacSHA256加密。



create or replace and compile java source named HmacSHA256 as
import java.lang.*;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import javax.xml.bind.DatatypeConverter;
public class HmacSHA256 {      
    public static String getHmacSHA256(String str1,String str2) {
        try {
            String teststr = str1;
            String AppSecretKey = str2;
            byte[] message = teststr.getBytes();
            Mac mac = Mac.getInstance("HmacSHA256");
            SecretKeySpec secretKey = new SecretKeySpec(AppSecretKey.getBytes("UTF-8"), "HmacSHA256");
            mac.init(secretKey);
            byte[] result1 = mac.doFinal(message);
            String result = DatatypeConverter.printBase64Binary(result1);
            return result;
        } catch(Exception e)
        {
            return "" ;
        }
    }
}


CREATE OR REPLACE FUNCTION fun_hmacsha256(str1 IN STRING,str2 IN STRING)
RETURN String
IS
LANGUAGE JAVA NAME 'HmacSHA256.getHmacSHA256(java.lang.String,java.lang.String) return String';


select fun_hmacsha256('123456','qsm16iZAtofROdDSNmPesvztwvxVHltY') from dual
喜欢0 评分0
游客

返回顶部