【发布时间】: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