v_upl_blob BLOB;
vstart Number :=1;
बाइटलेन नंबर :=32000;
लेन नंबर;
my_vr रॉ (32000);
x नंबर;
l_output Utl_file.file_type;
erout varchar2(1000);
BEGIN
blob_content चुनें
v_upl_blob में
wwv_flow_files से
जहां नाम =:P25_FB;
-- :p25_fb पेज में फ़ाइल ब्राउज़ आइटम है
LEN:=Dbms_lob.getlength(V_UPL_BLOB);
l_output :=Utl_File.fopen ('MY_FILES', :P25_FB, 'wb', 32760);
vstart :=1;
bytelen :=32000;
IF लेन <32760
फिर
Utl_File.put_raw (l_output, V_UPL_BLOB);
Utl_File.fflush (l_output);
और -- टुकड़ों में लिखें
vstart :=1;
जबकि vstart <लेन और बाइटलेन> 0
LOOP
Dbms_lob.पढ़ें (V_UPL_BLOB, bytelen, vstart, my_vr);
Utl_File.put_raw (l_output, my_vr);
Utl_File.fflush (l_output);
-- अगले कट के लिए प्रारंभ स्थिति सेट करें
vstart :=vstart + bytelen;
-- 32000 बाइट्स से कम होने पर अंतिम स्थिति सेट करें
x :=एक्स - बाइटलेन;
IF x <32000
तब
bytelen :=x;
END IF;
END LOOP;
END IF;
Utl_File.fclose (l_output);
wwv_flow_files
से हटाएं जहां नाम =:P25_FB;
COMMIT;
--- आयात करने के लिए अपनी कस्टम डेटाबेस प्रक्रिया को कॉल करें...
yourcustomprocedure(:P25_FB);
अपवाद जब अन्य
तब
IF Utl_File.is_Open(l_output) तब
Utl_File.fclose (L_OUTPUT);
END IF;
raise;
END;