环境
| 名称 | 值 |
|---|---|
| CPU | 12th Gen Intel(R) Core(TM) i7-12700H |
| 操作系统 | CentOS Linux release 7.9.2009 (Core) |
| 内存 | 7G |
| 逻辑核数 | 8 |
| DM 版本 | DM Database Server 64 V8 DB Version: 0x7000d 03134284368-20250917-293539-20149 Msg Version: 44 Gsu level(5) cnt: 0 |
最近有个需求要在达梦数据库里跑一些 Java 逻辑,于是折腾了一下它的 Java 外部函数。整个过程不算复杂,但有几个地方不注意就会报错,顺手记下来。
大概流程
创建外部函数的基本语法是:
CREATE [OR REPLACE] FUNCTION [IF NOT EXISTS] [<模式名>.]<函数名>[(<外部函数参数列表>)] RETURN <返回值类型> EXTERNAL '<jar 包路径>' [AND] <引用的 JAVA 函数名>[(<JAVA 函数参数列表>)] USING JAVA;
参数类型映射大致是这样:
int→intchar/varchar/varchar2→Stringbigint→longdouble/float/binary_float→doublebinary/varbinary→byte[]clob→Stringblob→byte[]
调用函数通过 Java 反射进行,所以方法最好声明为 public,所属类要有无参构造。<引用的 JAVA 函数名> 里包名和类名用 . 或 分隔,类与方法之间用 。比如:


