【发布时间】:2021-09-08 16:14:10
【问题描述】:
我们使用 Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production。
我已经在 Oracle 中加载了 OS_COMMAND 包,我看到它都是 java。
我最感兴趣的过程是允许用户在 Oracle 过程中运行 Linux 命令的过程。定义如下:ex 1
function exec(p_command in varchar2, p_stdin in blob) return number
is language java name 'ExternalCall.exec(java.lang.String, oracle.sql.BLOB) return int';
我如何在 Oracle PL?SQL 过程或函数中定义它以使其作为 Oracle 函数运行?
我拥有的唯一示例是一个 Oracle 过程,它定义了一个 Java 方法以用作 Oracle 函数。如下:ex 2
CREATE OR REPLACE PROCEDURE SLDPROC.shell (p_command IN VARCHAR2)
AS LANGUAGE JAVA
NAME 'Host.executeCommand (java.lang.String)';
/
来自以下java方法:ex 3
public class Host {
public static void executeCommand(String command) ...
...
那么长时间(20 年)没有使用 java,我如何创建一个类似的 Oracle 过程来包装一个 java 过程,如第一个示例中定义的 set_exec_in_shell 过程,例如 1?
谢谢!
【问题讨论】:
-
您想编写一个 Java 存储过程,它以字符串形式接收操作系统命令并执行该命令。对吗?
标签: java oracle stored-procedures