我的客户希望能够从 Oracle PL/SQL 调用 jar 文件。
Java 1.6、Oracle 11g R2
我该怎么做呢?
我对 loadjava(将类加载到 Oracle 中的程序)做了一些研究。听起来像是屁股疼。
所以我选择在 Oracle 之外运行我的 jar,但通过 PL/SQL 从 Oracle DBMS_SCHEDULER 调用。
就是这样:
BEGIN
DBMS_SCHEDULER.CREATE_PROGRAM (
program_name => 'testjar',
program_type => 'EXECUTABLE',
program_action => 'C:\MYSTUFF\testjar.bat',
enabled => TRUE,
comments => 'test testjar'
);
END;
/
begin
dbms_scheduler.create_job
(job_name => 'testjar_job',
program_name=> 'testjar',
enabled=>true,
auto_drop=>false,
comments=>'Only run immediately by dbms_scheduler.run_job');
end;
/
begin
dbms_scheduler.run_job('testjar_job',TRUE);
end;
/
在玩了之后,我发现模式 JAR_NAME.jar///ClassName.methodName(.... 有效。
例如:
Function do()
return String
AS
LANGUAGE java
NAME 'my_jar.jar///MyClass.myMethod() return oracle.sql.String';
请注意,似乎某些 jar 名称文件不起作用。例如,我在 jar 中遇到了“-”的问题。