LOB大對象處理:主要是用來存儲大量數(shù)據(jù)的數(shù)據(jù)庫字段,最大可以存儲4G字節(jié)的非結(jié)構(gòu)化數(shù)據(jù)。主要介紹字符類型和二進(jìn)制文件類型LOB數(shù)據(jù)的存儲,單獨介紹二進(jìn)制類型LOB數(shù)據(jù)的存儲。
在做網(wǎng)站、成都做網(wǎng)站過程中,需要針對客戶的行業(yè)特點、產(chǎn)品特性、目標(biāo)受眾和市場情況進(jìn)行定位分析,以確定網(wǎng)站的風(fēng)格、色彩、版式、交互等方面的設(shè)計方向。創(chuàng)新互聯(lián)還需要根據(jù)客戶的需求進(jìn)行功能模塊的開發(fā)和設(shè)計,包括內(nèi)容管理、前臺展示、用戶權(quán)限管理、數(shù)據(jù)統(tǒng)計和安全保護(hù)等功能。
一. Oracle中的LOB數(shù)據(jù)類型分類
1,按存儲數(shù)據(jù)的類型分:
①字符類型:
CLOB:存儲大量單字節(jié)字符數(shù)據(jù)。
NLOB:存儲定寬多字節(jié)字符數(shù)據(jù)。
②二進(jìn)制類型:
BLOB:存儲較大無結(jié)構(gòu)的二進(jìn)制數(shù)據(jù)。
③二進(jìn)制文件類型:
BFILE:將二進(jìn)制文件存儲在數(shù)據(jù)庫外部的操作系統(tǒng)文件中。存放文件路徑。
2,按存儲方式分:
①存儲在內(nèi)部表空間:
CLOB,NLOB和BLOB
②指向外部操作系統(tǒng)文件:
BFILE
二、大對象處理方法。參考書 美河提供.精通Oracle.10g.Pl.SQL編程
1、DBMS_LOB.Read():從LOB數(shù)據(jù)中讀取指定長度數(shù)據(jù)到緩沖區(qū)的過程。
DBMS_LOB.Read(LOB數(shù)據(jù),指定長度,起始位置,
存儲返回LOB類型值變量);
2、DBMS_LOB.SubStr():從LOB數(shù)據(jù)中提取子字符串的函數(shù)。
DBMS_LOB.SubStr(LOB數(shù)據(jù),指定提取長度,提取起始位置):
③:DBMS_LOB.InStr():從LOB數(shù)據(jù)中查找子字符串位置的函數(shù)。
DBMS_LOB.InStr(LOB數(shù)據(jù),子字符串);
④:DBMS_LOB.GetLength():返回指定LOB數(shù)據(jù)的長度的函數(shù)。
DBMS_LOB.GetLength(LOB數(shù)據(jù));
⑤:DBMS_LOB.Compare():比較二個大對象是否相等。返回數(shù)值0為相等,-1為不相等。
DBMS_LOB.Compare(LOB數(shù)據(jù),LOB數(shù)據(jù));
6、DBMS_LOB.Write():將指定數(shù)量的數(shù)據(jù)寫入LOB的過程。
DBMS_LOB.Write(被寫入LOB,寫入長度(指寫入LOB數(shù)據(jù)),寫入起始位置(指被寫入LOB),寫入LOB數(shù)據(jù));
7、DBMS_LOB.Append():將指定的LOB數(shù)據(jù)追加到指定的LOB數(shù)據(jù)后的過程。
DBMS_LOB.Append(LOB數(shù)據(jù),LOB數(shù)據(jù));
8、DBMS_LOB.Erase():刪除LOB數(shù)據(jù)中指定位置的部分?jǐn)?shù)據(jù)的過程;
DBMS_LOB.Erase(LOB數(shù)據(jù),指定刪除長度,開始刪除位置);
9、DBMS_LOB.Trim():截斷LOB數(shù)據(jù)中從第一位置開始指定長度的部分?jǐn)?shù)據(jù)的過程;
DBMS_LOB.Trim(LOB數(shù)據(jù),截斷長度);
10、DBMS_LOB.Copy():從指定位置開始將源LOB復(fù)制到目標(biāo)LOB;
DBMS_LOB.Copy(源LOB,目標(biāo)LOB,復(fù)制源LOB長度,復(fù)制到目標(biāo)LOB開始位置,復(fù)制源LOB開始位置)
例如:循環(huán)輸出xml大數(shù)據(jù)內(nèi)容
declare
amount number;
buf varchar2(10000) := '';
temp varchar2(1000) := '';
begin
amount := 1;
for i in 1..200 loop
temp := '';
select dbms_lob.substr(krm.doc_content(clob類型),400,amount) into temp from km_review_main/*@ekp_link*/ krm
where krm.fd_id = '138eb83e89178bcce17136b43f8ab176';
amount := amount + 400;
DBMS_OUTPUT.put_line(temp);
end loop;
end;
參考網(wǎng)站:
http://blog.csdn.net/tianlesoftware/article/details/5070981