【问题标题】:Oracle Database 12c - can't compile class with method witch uses org.oracle.BLOB objectOracle Database 12c - 无法使用 org.oracle.BLOB 对象的方法编译类
【发布时间】:2017-09-02 13:12:53
【问题描述】:

我想在 Oracle Database 12c 中调用我的 Java 类,然后基于我的类创建函数。

CREATE OR REPLACE AND RESOLVE JAVA SOURCE NAMED "Test" AS
import oracle.sql.*;
import java.sql.SQLException;
public class Test {
  public static String readFromBLOB(BLOB inputBLOB, int addID) throwsSQLException {    
    //some code
  }
}

CREATE OR REPLACE FUNCTION READ_BLOB(inputBLOB in BLOB, addID in number) return number
AS LANGUAGE JAVA NAME 'Test.readFromBLOB(oracle.sql.BLOB, java.lang.int) return java.lang.String';

我正在尝试基于我的 Test.readFromBLOB() 创建 PL/SQL 函数,但编译器显示:

"Error: Note: Recompile with -Xlint:deprecation for details."

之前我用过

import java.sql.*;

而不是

import oracle.sql.*;

我的类和我的 PL/SQL 函数创建正确,但是当我尝试运行该函数时出现错误:

ORA-29531: brak metody readFromBLOB w klasie Test
ORA-06512: przy "SYS.READ_COMMENT", linia 1
ORA-06512: przy linia 12
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.

我阅读了很多关于它的内容,我知道这个问题是由使用 BLOB 类型的 Oracle 数据库引起的,在 Java 中是 oracle.sql.BLOB,但在 Java 中这种类型已被弃用。早些时候使用 java.sql.Blob 的问题是当我的函数接受 java.sql.Blob 时,PL\SQL 传递给了我的函数 oracle.sql.BLOB。 我不知道该怎么办。我希望有人帮助我:)

【问题讨论】:

    标签: java oracle plsql oracle12c


    【解决方案1】:

    请改用oracle.jdbc.OracleBlob

    【讨论】:

    • 感谢您的回复!我通过将“java.lang.int”更改为“int”解决了自己这个问题 - 愚蠢的我!
    猜你喜欢
    • 2018-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多