【发布时间】:2015-05-23 23:47:34
【问题描述】:
我正在构建一个 Web 服务,它在负载中获取输入 XML 并将其存储在数据库中。
在 DAO 层中,我正在使用 XML 字符串创建一个 clob 对象,例如:
CLOB clob = CLOB.createTemporary(conn,false,CLOB.MODE_READWRITE);
clob.putString(1,inputXml);
我将这个 clob 对象传递给存储过程:
declareParameter(new SqlParameter("i_xml", OracleTypes.CLOB));
在可执行方法中:
params.put("i_xml",clob);
Map<?, ?> result = execute(params);
所以,当我调用这个 Web 服务时,我可以看到 XML 正在正确地发送到 Oracle DB,但是我从数据库中收到一条错误消息:
System Error occured while Creating ORA-22922: nonexistent LOB value
请告诉我如何解决此问题。提前致谢。
【问题讨论】:
-
这个answer 可能对你有帮助。
-
您还应该注意 LOB 读取一致性,并确保避免在过程中提交或回滚。
-
CLOB.createTemporary()的第三个参数应该是CLOB.DURATION_CALL或者CLOB.DURATION_SESSION。
标签: java xml spring oracle clob