शुरुआत के लिए, आपको यह समझने की जरूरत है कि LOB क्या हैं। वे "बड़े डेटा" हैं, संभवतः Oracle में किसी भी अन्य डेटा प्रकार से बड़े हैं। वे फाइल सिस्टम पर नियमित फाइलों की तरह हैं। किसी फ़ाइल सिस्टम पर किसी फ़ाइल को लिखने के लिए, आपको
. करना होगा- लिखने के लिए फ़ाइल खोलें
- अगर आप फ़ाइल को नए सिरे से भरना शुरू करना चाहते हैं, तो उसे काट दें
- अपने स्रोत डेटा को एक लूप में टुकड़ों में पढ़ें
- अपना डेटा हिस्सा एक ही लूप में फ़ाइल में एक-एक करके जोड़ें
- फ़ाइल बंद करें
कमोबेश यही बात एलओबी पर भी लागू होती है। आपकी तालिका में, एक LOB (CLOB/BLOB/NCLOB) कॉलम वास्तविक डेटा रखने वाले आपके डिस्क स्टोरेज पर किसी अन्य स्थान पर सिर्फ एक पॉइंटर/संदर्भ है। मानक Oracle शब्दों में, सूचक को "LOB लोकेटर" कहा जाता है। आपको चाहिए
- LOB लोकेटर को खोलें/आरंभ करें
- एलओबी सामग्री को छोटा करें, यदि आप इसे नए सिरे से भरना शुरू करना चाहते हैं
- लूप में LOB सामग्री में अपने डेटा भाग को एक-एक करके जोड़ें
- LOB लोकेटर बंद करें
PL/SQL में यह इस तरह दिख सकता है:
-- create table blob_test(id number, b blob);
declare
v_b blob;
aaa raw(32767);
longLine varchar2(32767);
begin
longLine := LPAD('aaaa', 32767,'x');
aaa := UTL_RAW.CAST_TO_RAW(longLine);
insert into blob_test values(1,empty_blob()) returning b into v_b;
dbms_lob.open(v_b,dbms_lob.lob_readwrite);
dbms_lob.writeappend(v_b,UTL_RAW.LENGTH (aaa) ,aaa);
dbms_lob.close(LOB_LOC=>v_b);
commit;
end;
एक स्पष्टीकरण:
- LOB लोकेटर को इनिशियलाइज़ करें =
insert into blob_test values(1,empty_blob()) returning b into v_b;
- लिखने के लिए LOB लोकेटर खोलें =
dbms_lob.open(v_b,dbms_lob.lob_readwrite);
- एलओबी सामग्री को छोटा करें, यदि आप इसे नए सिरे से भरना शुरू करना चाहते हैं ... यह
empty_blob()
द्वारा किया जाता हैinsert
. में कॉल करें । - लूप में LOB सामग्री में अपने डेटा भाग को एक-एक करके जोड़ें =यहां
dbms_lob.writeappend()
का केवल एक पुनरावृत्ति है , केवल एक ही हिस्सा जोड़नाaaa
लंबाई काutl_raw.length(aaa)
(अधिकतम 32767) LOBv_b
. में - LOB लोकेटर बंद करें =
dbms_lob.close(LOB_LOC=>v_b);