ORA-29531: class (java) 中没有方法

ORA-29531: no method in class (java)

我在 Oracle 的一个包中有一个 java 过程:

procedure pREPORTTEHMOG_java(dName varchar2, dFrame number, dSlot number, dPort number) 
AS  LANGUAGE java NAME 'REPORTTEHMOG_TEST.dovuciREPORTTEHMOG_TEST(java.lang.String,int,int,int)';

它的定义是这样的:

CREATE OR REPLACE AND RESOLVE JAVA SOURCE NAMED WIS."REPORTTEHMOG_TEST" AS import java.sql.*;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Calendar;

public class REPORTTEHMOG_TEST {
...
public static void dovuciREPORTTEHMOG_TEST(String dName, Integer dFrame, Integer dSlot, Integer dPort) throws Exception {
 ...
}
...
}

当我尝试这样调用过程时:

declare
begin
REPORT_TEHMOG.pREPORTTEHMOG_java('MA5818_Caic', 0, 1, 1);
end;

它抛出一个错误:

ORA-29531: no method dovuciREPORTTEHMOG_TEST in class REPORTTEHMOG_TEST

有人知道这个问题吗?

int原语和the Integer class不是一回事,所以你的声明与Java方法不匹配。应该是:

procedure pREPORTTEHMOG_java(dName varchar2, dFrame number, dSlot number, dPort number) 
AS LANGUAGE java NAME 'REPORTTEHMOG_TEST.dovuciREPORTTEHMOG_TEST(java.lang.String,java.lang.Integer,java.lang.Integer,java.lang.Integer)';

或者 Java 参数 int 如果合适的话。