gpt4 book ai didi

java - 参数中带有 clob 的 oracle 过程(大文本)

转载 作者:行者123 更新时间:2023-12-01 15:30:21 40 4
gpt4 key购买 nike

尝试使用过程将大型文本对象插入 Oracle 数据库时遇到问题。

我的程序需要向oracle数据库中插入数千个项目,由于逐一插入的性能问题,我编写了一个oracle程序并一次插入所有项目。

伊巴蒂斯:

<parameterMap id="EttAttrCall" class="java.util.Map">
<parameter property="ettAttrLst" jdbcType="CLOB" javaType="java.lang.String" mode="IN"/>
<parameter property="pjtId" jdbcType="VARCHAR2" javaType="java.lang.String" mode="IN"/>
<parameter property="createUser" jdbcType="VARCHAR2" javaType="java.lang.String" mode="IN"/>
</parameterMap>
<procedure id="insertTmpEttAttr" parameterMap="EttAttrCall">
{ call INS_TMP_ETT_ATTR(?,?,?)}
</procedure>

oracle程序:

create or replace
PROCEDURE INS_TMP_ETT_ATTR
(
ettAttrLst IN CLOB,
pjtId IN VARCHAR2,
createUser IN VARCHAR2
)

如果数据长度不超过300万个字符,一切正常,但如果超过这个数字,oracle将抛出此异常:ORA-06502: PL/SQL: 数字或值错误: 字符串缓冲区太小

我尝试在互联网上搜索,但没有太多有用的信息。因此,任何建议或想法都将受到高度赞赏。

最佳答案

CLOB 的限制是 4 gig,所以我猜您正在处理 Varchar2 限制,该限制在您的 PL/SQL 代码中超出了。

您必须查看错误堆栈中的行号。通常Oracle会提供额外的ORA-06512错误来指示这些PL/SQL对象和错误堆栈的行号。

如果您使用多字节字符,请大胆猜测:请注意是否以字节(默认)或字符为单位指定 Varchar2 大小。 varchar2 的限制是 32767 字节(不是字符!)

在下面发表评论后进行编辑:

评论this question例如如何执行批量插入

关于java - 参数中带有 clob 的 oracle 过程(大文本),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9599733/

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