Java 使用ApacheCamel框架将数据持久化到Oracle数据库中的BLOB/CLOB数据类型中

Java 使用ApacheCamel框架将数据持久化到Oracle数据库中的BLOB/CLOB数据类型中,java,oracle,apache-camel,blob,clob,Java,Oracle,Apache Camel,Blob,Clob,需要使用apachecamel框架将数据(XML)存储到oracle数据库中的BLOB数据类型中。 执行普通查询很好。但当我试图将数据持久化到BLOB中时,oracledb需要一个兼容的类型。 我尝试使用utl_raw.cast_to_raw将原始数据转换为BLOB兼容类型 这适用于较小的数据,但当数据很大时(如超过2048个字符的大型请求XML),会抛出错误SQL错误:ORA-06502:PL/SQL:数值或值错误:原始变量长度太长 有人能告诉我如何使用ApacheCamel将超过2048个字

需要使用apachecamel框架将数据(XML)存储到oracle数据库中的BLOB数据类型中。 执行普通查询很好。但当我试图将数据持久化到BLOB中时,oracledb需要一个兼容的类型。 我尝试使用utl_raw.cast_to_raw将原始数据转换为BLOB兼容类型

这适用于较小的数据,但当数据很大时(如超过2048个字符的大型请求XML),会抛出错误SQL错误:ORA-06502:PL/SQL:数值或值错误:原始变量长度太长

有人能告诉我如何使用ApacheCamel将超过2048个字符的数据存储在BLOB数据类型中吗


非常感谢您的帮助。

下面是一个使用HSQLDB进行测试时效果良好的示例(我手头没有Oracle数据库可供测试,但它应该也能正常工作):


如果您能提到您用来调用数据库的camel组件(camel-sql、camel-jdbc等),并展示一个导致错误的代码示例,这会有所帮助。它是camel-SqlComponent因为你还没有发布任何代码。也许这个答案有助于找到正确的解决方案,谢谢!这是很有帮助的。我贴了一个答案,上面有一些明显的例子,这些例子应该是有效的,但是如果没有一个实际的代码示例来说明什么对你不起作用,那么很难知道它是否是正确的答案。谢谢!!这很有帮助。只需将字符串值作为字节存储到字节数组中,并将此字节数组引用传递到insert查询,即可将其作为blob内容存储。不客气!如果正确回答了你的问题,请考虑将答案标记为“接受”。
// This is just to have some relatively large ammount of data to insert in the BLOB, details don't matter
private static final byte[] LARGE_DATA.getBytes(StandardCharsets.UTF_8);
static {
    final StringBuilder builder = new StringBuilder(10000);
    for (int i = 0; i < 4000; i++) {
        builder.append('a');
    }
    LARGE_STRING = builder.toString();
}

from("direct:clobTest")
.process(new Processor() {
    @Override
    public void process(Exchange exchange) throws Exception {
        exchange.getIn().setHeader("myParam", LARGE_DATA);
    }
})
.to("sql:INSERT INTO clob_table(clob_col) VALUES(:#myParam)");
final InputStream is = new ByteArrayInputStream(LARGE_DATA);
exchange.getIn().setHeader("myParam", is);