以前寫(xiě)過(guò)的一篇博文中提到了出現(xiàn)“ORA-01461: 僅可以為插入 LONG 列的 LONG 值賦值”的原因,并給出了原因和解決方法,在這裡回顧一下。(詳見(jiàn) 當(dāng)遇到“數(shù)據(jù)大小超出此類(lèi)型的最大值”和“僅可以為插入 LONG 列的 LONG 值賦值”時(shí)...? )當(dāng)時(shí)的環(huán)境:?數(shù)據(jù)庫(kù):Oracle 9i數(shù)據(jù)庫(kù)字段類(lèi)型:varchar2(4000)輸入漢字:大于1000字原因:?? 我的數(shù)據(jù)庫(kù)字符集應(yīng)該是UTF-8的,對(duì)于UTF-8或歐洲的某些字符集,oracle在存儲(chǔ)時(shí),對(duì)于一個(gè)字符需要2個(gè)或3個(gè)字節(jié)的存儲(chǔ)空間,雖然表定義中為varchar2(4000),但是其實(shí)該字段的data_length為其2倍或3倍長(zhǎng)。這種情況下oracle會(huì)把data_length長(zhǎng)度超過(guò)4000的當(dāng)做LONG型處理,你的表中有兩個(gè)這樣的字段,插入數(shù)據(jù)時(shí)相當(dāng)于同時(shí)操作2個(gè)LONG字段,所以報(bào)錯(cuò)。
當(dāng)時(shí)的解決辦法:建議減小字段長(zhǎng)度或拆分。實(shí)在需要的,可以轉(zhuǎn)而采用CLOB字段類(lèi)型。 現(xiàn)在的環(huán)境:
生存或毀滅,這是個(gè)必答之問(wèn)題:是否應(yīng)默默的忍受坎苛命運(yùn)之無(wú)情打擊,還是應(yīng)與深如大海之無(wú)涯苦難奮然為敵,并將其克服。此二抉擇,究竟是哪個(gè)較崇高?