在Java oracle过程中创建Clob对象时抛出的AbstractMethodError

时间:2017-09-29 10:00:51

标签: java oracle plsql

我正在开发一个必须实现CLOB对象的Java PLSQL过程。为了实现Clob对象,我必须使用连接对象。基于Oracle documentation,我可以使用java.sql.DriverManager获取当前连接,但是当我执行以下代码时,抛出了一个AbstractMethodError错误

Connection conn = DriverManager.getConnection("jdbc:default:connection:");
Clob clob = conn.createClob();

我看到很多帖子都在讨论驱动程序与运行代码的Java运行时的兼容性,但是当我在Oracle DB中工作时,我认为它应该是兼容的。

Oracle版本:11.2.0.4.0

我的目标是在我的java方法中创建一个clob并将其返回到我的plsql代码。如何在Oracle数据库中存储的java类中实现Clob?

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

使用CLOB创建conn.createClob()适用于12c的罚款。我怀疑你在11中的错误信息中你必须使用CLOB.createTemporary方法来创建CLOB(在12c中工作正常,但标记为已弃用)。

这是一个例子

Java类

CREATE OR REPLACE AND RESOLVE JAVA SOURCE NAMED "CreateCLOB"
AS 
import java.sql.*;
import oracle.sql.*;
import oracle.jdbc.*;

/****** START PASTE JAVA CLASS HERE *****/
public class CreateCLOB{

  public static void ClobProc (Clob cl[]) throws SQLException
  {
    Connection conn = DriverManager.getConnection ("jdbc:default:connection:"); /* or use "jdbc:oracle:kprb:" */

    Clob clob =  CLOB.createTemporary(conn, false, oracle.sql.CLOB.DURATION_SESSION); /* this is deprecated in 12c */
                // conn.createClob(); /* works fine in 12.1.0.2.0 */
    clob.setString(1, "Test Data");
    cl[0] = clob;
  }
}
/

<强>包装

create or replace procedure MyClob (cl OUT Clob) 
  as language java
  name 'CreateCLOB.ClobProc(java.sql.Clob[])';
/

<强>测试

declare
x Clob;

begin
  MyClob(x);
  dbms_output.put_line('created CLOB length = ' || dbms_lob.getlength(x));
end;
/

created CLOB length = 9

如上所述,我无法在版本11上测试它,但我想它会起作用。

select * from v$version;
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production

答案 1 :(得分:0)

您需要按照以下步骤操作:

<强> 1。在您的计算机上,您应该有一个Oracle jdbc驱动程序(http://www.oracle.com/technetwork/database/features/jdbc/index-091264.html

<强> 2。加载驱动程序

Class.forName("oracle.jdbc.driver.OracleDriver");

第3。获得连接

Connection connection =
DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:SID","username","password");

更新:如果您在Oracle DB内部工作,您可以选择一种驱动程序(服务器端瘦驱动程序或服务器端内部驱动程序) - https://docs.oracle.com/cd/E11882_01/appdev.112/e13995/oracle/jdbc/OracleDriver.html