0

我正在尝试通过 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

我真的不明白问题可能是什么。如果有人这样做,我将非常感激。

4

1 回答 1

0

之前

创建函数

步骤你需要在命令行编译你的类

$>javac UAM_TOOLS.java

或使用 IDE 之类的 Eclipse

这将生成带有 .class 扩展名的编译类。对于您的情况,它将是 UAM_TOOLS.class

而且您仍然需要在命令行上将其上传到数据库,其中运行 db 的主机

$>loadjava -user yourUserName/youPass@Yourdb UAM_TOOLS.class

在这 2 步之后,您可以使用创建功能步骤继续。

于 2018-04-13T13:19:09.483 回答