我猜这是一个重复的问题,但还没有找到合适的解决方案。基本上我试图通过 DB2 过程将大量XML,即32000多个字符插入到CLOB列中。插入失败,出现以下错误,看起来DB2将输入视为String而不是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
答案 0 :(得分:1)
DB2中的字符文字限制为大约32K字节。要处理更大的LOB,您需要避免使用SQL文本值。
在没有额外编程的情况下执行此操作的一种方法是将[future] CLOB内容写入文件,并使用IMPORT
或LOAD
将其内容插入到列中。
或者,您可以围绕过程调用包装一个简单的Java程序,您可以使用PreparedStatement.setClob()
来处理大型XML文档。