java - SQL 开发人员 ORA-29531

标签 java sql oracle

尝试让 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/

相关文章:

mysql - 在表中添加首字母必须为0的列?

SQL 无法识别 where 子句中的列别名

java - keytool错误: java. lang.IllegalArgumentException : publicKey's is not X. 509,但是X509

java - OpenJDK7 与 Oracle JDK 的更新

MySQL - WHERE ATD 与 STD 的差值在负 10 分钟内

java - hibernate 中的条件连接获取

java - 无法在 mybatis 查询中连接超过 4k 字符

java - 传递给持久化的分离实体 : com. carpooling.entity.Role;嵌套异常是 org.hibernate

java - 无法连接到 http-remoting - Maven-Wildfly 插件

sql - 将多个结果合并到单个字段中的子查询?