【解決方案】Oracle插入/更新CLOB欄位報ORA-01704:字串文字太長
解決辦法:
1、如果插入的SQL比較少,那麼可以人工處理。方法是使用PLSQL Developer軟體,命令為:select * from 表名 for update。這樣把相關的欄位內容直接複製到CLOB欄位中,最後提交即可。
2、如果插入的SQL比較多,那麼需要先把所有的SQL語句插入到表中,然後對SQL語句進行處理。要找規律,找到規律,然後用PL/SQL塊進行插入或更新即可。
DECLARE
v_clobValue CLOB:= 'XXX'; --欄位內容,但是單引號中的內容不能超過4000字元
BEGIN
UPDATE 表名 T SET T.欄位名 = T.欄位名|| v_clobValue WHERE 條件;
COMMIT;
END;
/
最近遇到了一個這樣的問題,在對Oracle資料庫插入或者更新CLOB欄位的時候,直接拼接了一個INSERT INTO和UPDATE語句,類似下面這種:
- INSERT INTO 表名(欄位1, 欄位2, CLOB欄位) VALUES ('XX', 'XXX', '內容非常多');
- UPDATE 表名 T SET T.CLOB欄位名 = '內容非常多';
在執行SQL的時候報了[ORA-01704:字串檔案太長]的錯誤,如下圖所示:
以上SQL語法沒有任何問題,但是如果CLOB欄位的內容非常大的時候,會導致SQL語句過長,我認可網上的這個說法:隱式轉換,oracle預設把字串轉換成varchar2型別,而這個字串的長度,又比4000大,所以會報ora-01704錯誤。說得通俗一點,就是兩個單引號之間的字元不能超過4000。
遇到這個問題,可以使用PL/SQL語法,採取繫結變數的方式依次拼裝更新,而不是直接拼接SQL,例如:
- DECLARE
- v_clobValue CLOB:= 'XXX'; --欄位內容,但是單引號中的內容不能超過4000字元
- BEGIN
- UPDATE 表名 T SET T.欄位名 = T.欄位名|| v_clobValue WHERE 條件;
- COMMIT;
- END;
- /
About Me
.............................................................................................................................................
● 本文作者:小麥苗,部分內容整理自網路,若有侵權請聯絡小麥苗刪除
● 本文在itpub(http://blog.itpub.net/26736162/abstract/1/)、部落格園(http://www.cnblogs.com/lhrbest)和個人微信公眾號(xiaomaimiaolhr)上有同步更新
● 本文itpub地址:http://blog.itpub.net/26736162/abstract/1/
● 本文部落格園地址:http://www.cnblogs.com/lhrbest
● 本文pdf版、個人簡介及小麥苗雲盤地址:http://blog.itpub.net/26736162/viewspace-1624453/
● 資料庫筆試面試題庫及解答:http://blog.itpub.net/26736162/viewspace-2134706/
● DBA寶典今日頭條號地址:http://www.toutiao.com/c/user/6401772890/#mid=1564638659405826
.............................................................................................................................................
● QQ群號:230161599(滿)、618766405
● 微信群:可加我微信,我拉大家進群,非誠勿擾
● 聯絡我請加QQ好友(646634621),註明新增緣由
● 於 2018-05-01 06:00 ~ 2018-05-31 24:00 在魔都完成
● 最新修改時間:2018-05-01 06:00 ~ 2018-05-31 24:00
● 文章內容來源於小麥苗的學習筆記,部分整理自網路,若有侵權或不當之處還請諒解
● 版權所有,歡迎分享本文,轉載請保留出處
.............................................................................................................................................
● 小麥苗的微店:https://weidian.com/s/793741433?wfr=c&ifr=shopdetail
● 小麥苗出版的資料庫類叢書:http://blog.itpub.net/26736162/viewspace-2142121/
● 小麥苗OCP、OCM、高可用網路班:http://blog.itpub.net/26736162/viewspace-2148098/
.............................................................................................................................................
使用微信客戶端掃描下面的二維碼來關注小麥苗的微信公眾號(xiaomaimiaolhr)及QQ群(DBA寶典),學習最實用的資料庫技術。
小麥苗的微信公眾號 小麥苗的DBA寶典QQ群2 《DBA筆試面試寶典》讀者群 小麥苗的微店
.............................................................................................................................................
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26736162/viewspace-2154662/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- OGG複製同步,提示欄位長度不夠ORA-01704
- oracle 修改表欄位的長度Oracle
- [20180416]clob的插入.txt
- 簡單介紹2種Java讀取Oracle大欄位資料(CLOB)的方法JavaOracle
- 包括clob segment 大欄位 表的大小統計
- Oracle 修改欄位型別和長度Oracle型別
- echarts圖表X軸文字過長解決解決方案:根據文字長度自動旋轉Echarts
- 更新欄位時更新時間不自動更新(不更新 updated_at 欄位)
- mybatis update並非所有欄位需要更新的解決辦法MyBatis
- Oracle DBLink中CLOB報錯ORA-22992Oracle
- mPDF:當表格中的字串太長時,文字字型變小字串
- SQL INSERT INTO 語句詳解:插入新記錄、多行插入和自增欄位SQL
- Oracle 條件索引 case when 報錯解決方案Oracle索引
- 小程式中富文字解決方案
- 【Mongo】mongo更新欄位為另一欄位的值Go
- web前端技術分享:多行文字溢位問題解決方案Web前端
- CSS小問題與解決方案記錄(長期更新)CSS
- CSS解決文字溢位問題CSS
- Oracle-欄位的新增Oracle
- 專案更新迭代解決方案
- Oracle_勒索病毒解決方案Oracle
- DB2_更新SQL欄位DB2SQL
- es 更新指定欄位的方法
- 怎麼給字串欄位加索引?字串索引
- Elasticsearch 單字串多欄位查詢Elasticsearch字串
- DDL操作導致欄位長度變更修復方案
- ORACLE LOB大欄位維護Oracle
- oracle fga審計(欄位級)Oracle
- weex沉浸式導航欄解決方案
- .NET 資料庫大資料 方案(插入、更新、刪除、查詢 、插入或更新)資料庫大資料
- [BUG反饋]模型增加欄位後field_sort欄位未更新模型
- 關於Oracle的BLOB和CLOBOracle
- MSSQL Server 遷移至 ORACLE解決方案SQLServerOracle
- Mybatis-Plus 更新欄位為 NULLMyBatisNull
- 【ORA-01555】Oracle LOB欄位匯出 報錯 ORA-01555Oracle
- oracle增加欄位帶預設值Oracle
- 查詢oracle欄位預設值Oracle
- mysql8.0插入慢的問題解決方案(一)MySql