當通過insert語句直接插入大量字符串(主要是html的內容),超過4000字符時候,就會報:
ORA-01489: 字符串連接的結果過長
雖然字段是clob,足以存儲,但是通過這種直接插入的時候,因為沒有強制指定帶插入字符串為clob類型,
oracle會把插入的字符串作為 “字符串類型”處理,由於oracle有最大字符串限制(不超過4000個字符),所以會報錯。
解決思路:指定待插入字符串類型為clob,可以使用過程或存儲過程
例子:
DECLARE
REALLYBIGTEXTSTRING CLOB := '待插入的海量字符串';
BEGIN
INSERT INTO test_table VALUES('test', REALLYBIGTEXTSTRING, '0');
end ;
/
commit;
這樣就可以解決問題。
補充:java的jdk對這種情景有通過l流的方式處理,因此比較方便。
另外:插入html內容,可能含有空格 ,字符&是oracle的關鍵字,因此插入之前要轉義
如:'||chr(38)||'nbsp;