यहां मैं पीएल/एसक्यूएल में फाइल के रूप में बीएलओबी डेटा को सहेजने के लिए एक उदाहरण दे रहा हूं। BLOB डेटा आप इसे BLOB कॉलम वाली तालिका से प्राप्त कर सकते हैं, या आप इसे डिस्क पर किसी फ़ाइल से प्राप्त कर सकते हैं।
BLOB को फ़ाइल के रूप में सहेजने के लिए PL/SQL फ़ंक्शन उदाहरण
नीचे दी गई प्रक्रिया में निम्नलिखित तीन तर्क हैं:
- Oracle निर्देशिका ऑब्जेक्ट नाम (i_dir के रूप में)।
- फ़ाइल नाम के रूप में सहेजें (i_file के रूप में)।
- बीएलओबी डेटा (i_blob के रूप में)।
CREATE OR REPLACE PROCEDURE blob_to_file (i_dir IN VARCHAR2, i_file IN VARCHAR2, i_blob IN BLOB) AS l_file UTL_FILE.file_type; l_buffer RAW (32767); l_amount BINARY_INTEGER := 32767; l_pos INTEGER := 1; l_blob_len INTEGER; BEGIN l_blob_len := DBMS_LOB.getlength (i_blob); l_file := UTL_FILE.fopen (i_dir, i_file, 'WB', 32767); WHILE l_pos < l_blob_len LOOP DBMS_LOB.read (i_blob, l_amount, l_pos, l_buffer); UTL_FILE.put_raw (l_file, l_buffer, TRUE); l_pos := l_pos + l_amount; END LOOP; UTL_FILE.fclose (l_file); EXCEPTION WHEN OTHERS THEN IF UTL_FILE.is_open (l_file) THEN UTL_FILE.fclose (l_file); END IF; RAISE; END blob_to_file;
परीक्षा
निम्नलिखित पीएल/एसक्यूएल ब्लॉक ओरेकल निर्देशिका ऑब्जेक्ट, फ़ाइल नाम और बीएलओबी डेटा पास करके उपरोक्त प्रक्रिया को कॉल करेगा। बीएलओबी डेटा के लिए, मैं GET_BLOB फ़ंक्शन का उपयोग कर रहा हूं जिसके लिए मैंने अपने पिछले ब्लॉग पोस्ट में एक उदाहरण दिया है:पीएल/एसक्यूएल में फ़ाइल से बीएलओबी प्राप्त करें। नीचे के मामले में, यह MY_DIR स्थान से myfile.jpg फ़ाइल से BLOB डेटा प्राप्त करेगा और इसे IMG_DIR स्थान में abc.jpg फ़ाइल करने के लिए सहेजेगा।
DECLARE f_blob BLOB; BEGIN /* check the above mentioned link for get_blob function example */ f_blob := get_blob ('MY_DIR', 'myfile.jpg'); /* now pass the blob to blob_to_file procedure to save it as a file */ blob_to_file ('IMG_DIR', 'abc.jpg', f_blob); END;
अब आप BLOB के माध्यम से बनाई गई फ़ाइल के लिए IMG_DIR निर्देशिका के स्थान की जांच कर सकते हैं।
यह भी देखें:
- Oracle निर्देशिका ऑब्जेक्ट कैसे बनाएं?
- टॉड का उपयोग करके Oracle तालिका से BLOB डेटा निकालने का तरीका जानें