2017-09-02 79 views
1

我想调用我的Java类到Oracle Database 12c中,然后根据我的类创建函数。Oracle Database 12c - 无法使用org.oracle.BLOB对象的方法编译类

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. 

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

回答

1

改为使用oracle.jdbc.OracleBlob

+0

感谢您的回复!我通过将“java.lang.int”更改为“int”来解决这个问题 - 愚蠢的我! – Damian