无法将 CLOB 数据存储在 DB2 中定义的列中



我想这是一个重复的问题,但还没有找到合适的解决方案。 基本上,我正在尝试通过DB2过程将巨大的XML(即32000+个字符(插入到CLOB列中。 插入失败,出现以下错误,看起来 DB2 将输入视为字符串而不是 CLOB 数据类型。 你能建议需要做什么吗?

SP

CREATE OR REPLACE PROCEDURE logging (IN HEADERDATA CLOB(10M))
LANGUAGE SQL
BEGIN
INSERT INTO Logging(Header) VALUES (HEADERDATA);
COMMIT;
END

错误

The string constant beginning with 
"'<?xml version="1.0" encoding="UTF-8"?><XXXXXXXX xmlns:xsi="http:" is too long.. 
SQLCODE=-102, SQLSTATE=54002, DRIVER=XXXXXX

DB2 中的字符文本限制为大约 32K 字节。若要处理较大的 LOB,需要避免使用 SQL 文本值。

无需额外编程即可执行此操作的一种方法是将 [未来] CLOB 内容写入文件,并使用IMPORTLOAD将其内容插入到列中。

或者,您可以在过程调用周围包装一个简单的 Java 程序,您将在其中使用PreparedStatement.setClob()来处理大型 XML 文档。

最新更新