尝试让 Java 函数通过成员函数工作。我对此很陌生,所以我不知道错误可能在哪里。将复制所有相关代码。
create or replace
type sfera as object(
radius number(10,2),
member function tilpums(radius double precision) return double precision);
create or replace and compile JAVA source named "Papild" as
public class Papild {
public static double rek(double radius)
{
return 3.14*radius*radius*radius*4/3;
}
}
create or replace
type body sfera as
member function tilpums(radius double precision) return double precision as Language java
Name 'Papild.rek(double) return double';
end;
Create table sferas of sfera;
Insert into sferas values(4);
select value(a).tilpums(radius) from sferas a;
并且从选择中我收到以下错误消息:
Error starting at line 1 in command:
select value(a).tilpums(radius) from sferas a
Error report:
SQL Error: ORA-29531: no method rek in class Papild
29531. 00000 - "no method %s in class %s"
*Cause: An attempt was made to execute a non-existent method in a
Java class.
*Action: Adjust the call or create the specified method.
我们将不胜感激所有帮助。
最佳答案
可以建议一种解决方法(不是通过工作来完美解决) - 使用独立函数并在成员一中调用它:
SQL> create or replace function standalon_tilpums(radius double precision)
2 return double precision as Language java
3 Name 'Papild.rek(double) return double';
4 /
SQL> select standalon_tilpums(4) from dual;
STANDALON_TILPUMS(4)
--------------------
267,946667
SQL> create or replace
2 type sfera as object(
3 radius number(10,2),
4 member function tilpums(radius double precision) return double precision);
5 /
SQL> create or replace
2 type body sfera as
3 member function tilpums(radius double precision) return double precision
4 is begin return standalon_tilpums(radius); end;
5 end;
6 /
SQL> Create table sferas of sfera;
SQL> Insert into sferas values(4);
SQL> select value(a).tilpums(radius) from sferas a;
VALUE(A).TILPUMS(RADIUS)
------------------------
267,946667
关于java - SQL 开发人员 ORA-29531,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21236080/