gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 06:29:11 25 4
gpt4 key购买 nike

我正在开发一个必须实例化 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?

感谢您的帮助!

最佳答案

使用 conn.createClob() 创建 CLOB 可以在 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

关于java - 在 Java oracle 过程中创建 Clob 对象时抛出 AbstractMethodError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46486447/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com