我试图通过java脚本在oracle数据库中调用bash脚本。为了测试它我只是尝试了一个基本脚本:
#!/bin/bash
echo "It works !"
我使用的java脚本是:
import java.lang.*;
import java.io.*;
public class UAM_TOOLS{
public static String Toto () throws IOException {
String[] unixCommand = {"/home/oz380/toto.sh"};
String pwd;
Process p = Runtime.getRuntime().exec(unixCommand);
BufferedReader input =
new BufferedReader
(new InputStreamReader(p.getInputStream()));
pwd = input.readLine();
input.close();
return pwd;
}
};
我授予了必须授予的所有权限,并在数据库中创建了该函数:
SQL> CREATE OR REPLACE FUNCTION TOPI RETURN VARCHAR2
2 as language java
3 name 'UAM_TOOLS.Toto() return java.lang.String';
4 /
但是当我调用该函数时:
select TOPI from dual;
或:
SQL> set serveroutput on;
SQL> DECLARE
2 G VARCHAR2(50);
3 BEGIN
4 G := UAM.TOPI;
5 DBMS_OUTPUT.PUT_LINE(G);
6 END;
7 /
它不起作用并打印错误:
ORA-29541: class UAM.UAM_TOOLS could not be resolved
我真的不明白问题是什么。如果有人,我会非常感激。
答案 0 :(得分:0)
之前
创建功能
步骤你需要在命令行编译你的类
$>javac UAM_TOOLS.java
或使用类似Eclipse的IDE
将生成扩展名为.class的编译类。对于您的情况,它将是UAM_TOOLS.class
您仍然需要在命令行上将其上传到数据库,在该命令行上运行db的主机
$>loadjava -user yourUserName/youPass@Yourdb UAM_TOOLS.class
在第2步之后,您可以使用创建功能步骤继续。