gpt4 book ai didi

java - 使用 JDBC 将 clob 数据传递到 Oracle 存储过程时出现错误 ORA-22828

转载 作者:行者123 更新时间:2023-11-30 03:35:44 28 4
gpt4 key购买 nike

我正在尝试使用 JDBC 将 CLOB 数据发送到存储过程中。我使用 oracle 数据库 11g 和 ojdbc6.jar 作为驱动程序。我无法发送数据,因为它大于 32kb。我尝试了各种方法来发送数据:

  1. 使用 Clob 对象
  2. 使用字符流

这些对我来说都不起作用。我收到以下错误:ORA-22828: 输入模式或替换参数超过 32K 大小限制

是否有某种方法可以使用 jdbc(java) 将大数据传递到 Oracle 存储过程中,该数据可能会扩展到 1MB。使用的代码如下:

CallableStatement cstmt = null;

String formedStr = "{CALL MAIL_PROC(?)}";
//Preparing statement
cstmt = con.prepareCall(formedStr);
cstmt.setCharacterStream(1, new StringReader(info.getContent()), info.getContent().length());
cstmt.execute();

最佳答案

我作为 clob 传入的 String 对象存在问题。其中有下一行 (\r\n)。当我删除它时,通话进展顺利。我使用了三种类型的调用来传递 clob 对象,现在都工作正常:

CallableStatement cstmt = null;

String formedStr = "{CALL MAIL_PROC(?)}";

cstmt = con.prepareCall(formedStr);

//Option 1:
cstmt.setCharacterStream(1, new StringReader(info.getContent()), info.getContent().length());

//Option 2:
cstmt.setString(1, info.getContent());

//Option 3:
Clob stmtClob = con.createClob();
stmtClon.setString(1,info.getContent())
cstmt.setClob(1,stmtClob);

cstmt.execute();

关于java - 使用 JDBC 将 clob 数据传递到 Oracle 存储过程时出现错误 ORA-22828,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27943173/

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