2017-07-02 105 views
1

這是我猜測的重複問題,但找不到合適的解決方案。基本上我試圖通過DB2程序將位巨大的XML即32000+個字符插入到CLOB列中。插入失敗,出現下面的錯誤,DB2正在將輸入視爲字符串而不是CLOB數據類型。你能建議需要做什麼嗎?無法將CLOB數據存儲到DB2中的CLOB定義列中

SP

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

錯誤DB2

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

請告訴你如何調用你的存儲過程。 – mustaccio

+0

CALL日誌記錄('<< data with 40000 char >>') – Som

+0

並在IBM數據工作室中運行此匿名塊。 JFYI。 – Som

回答

1

字符文字被限制爲大約32K字節。要處理更大的LOB,您需要避免使用SQL文字值。

在沒有額外編程的情況下執行此操作的一種方法是將[未來] CLOB內容寫入文件,並使用IMPORTLOAD將其內容插入到列中。

或者,您可以在您的過程調用中包裝一個簡單的Java程序,您將使用PreparedStatement.setClob()來處理您的大型XML文檔。

+0

謝謝,我可以像CALL logging('?')一樣運行主機變量。將嘗試像你說的和恢復Java代碼。 – Som

+0

它的工作原理。謝謝。 – Som