當透過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;
當透過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;