1.打开创建外部函数参数sp_set_para_value(2,'ENABLE_EXTERNAL_CALL',1); --参数需要重启生效
2.服务器也要开dmagent代理
注册)启动代理服务
cd /home/dmdba/dmdbms/tool/dmagent
[root]# ./service.sh install
几个回车
service DmAgentService completed.
[root]# su - dmdba
cd /home/dmdba/dmdbms/tool/dmagent/service
修改启动脚本,配置JDK变量
vi DmAgentServiceexport export JAVA_HOME=/home/dmdba/dmdbms/jdk
4.创建java外部函数(注意加粗部分)
CREATE OR REPLACE FUNCTION testa(a varchar)
RETURN varchar
EXTERNAL '/home/dmdba/dmdbms/bin/external_jar/lyc.jar'
"com.dameng.externfunction.test.testa" USING java;
CREATE OR REPLACE FUNCTION tesAdd(a int,b int)
RETURN int
EXTERNAL '/home/dmdba/dmdbms/bin/external_jar/lyc.jar'
"com.dameng.externfunction.test.testAdd" USING java;
public class test {
static int num = 0;
public static int testAdd(int a, int b) {
System.out.println("a="+a+",b="+b);
return a + b;
}
public static String testStr(String str) {
return str + " hello";
}
public static int testStatic(String str) {
System.out.println("testStatic"+1111);
num++;
return num;
}
public static int testError(String str) {
//int a = 1/0;
return num;
}
public static String testa(String args) throws Exception{
return args+"_aa";
}
}
1.打开创建外部函数参数sp_set_para_value(2,'ENABLE_EXTERNAL_CALL',1); --参数需要重启生效
2.服务器也要开dmagent代理
注册)启动代理服务
cd /home/dmdba/dmdbms/tool/dmagent
[root]# ./service.sh install
几个回车
service DmAgentService completed.
[root]# su - dmdba
cd /home/dmdba/dmdbms/tool/dmagent/service
修改启动脚本,配置JDK变量
vi DmAgentServiceexport export JAVA_HOME=/home/dmdba/dmdbms/jdk
./DmAgentService start
3.创建jar包目录(dmdba)
mkdir -p /home/dmdba/dmdbms/bin/external_jar
4.创建java外部函数(注意加粗部分)
CREATE OR REPLACE FUNCTION testa(a varchar)
RETURN varchar
EXTERNAL '/home/dmdba/dmdbms/bin/external_jar/lyc.jar'
"com.dameng.externfunction.test.testa" USING java;
CREATE OR REPLACE FUNCTION tesAdd(a int,b int)
RETURN int
EXTERNAL '/home/dmdba/dmdbms/bin/external_jar/lyc.jar'
"com.dameng.externfunction.test.testAdd" USING java;
5.执行调用
-- 然后正常调用即可
select tesAdd(1,2)
select testa('aa');
附java代码