CREATE USER TEST_USER IDENTIFIED BY TEST_USER;
GRANT DBA TO TEST_USER;
CONN TEST_USER/TEST_USER;
CREATE OR REPLACE DIRECTORY MY_DIR AS 'C:\temp\';
-- Img file will be create into "C:\temp\" directory.
CREATE OR REPLACE DIRECTORY IMAGE_DIR AS 'C:\image\';
-- Assume that your image into "C:\image\" directory.
CREATE OR REPLACE Procedure Img_File_Gen_From_Flat_File
(p_Source_Dir in varchar2 default 'IMAGE_DIR',
p_Image_Name in varchar2, -- Perticular Image_Name only.
Out_Img_Name in varchar2) -- A File Name without space
is
v_blob blob;
v_data_length number;
v_chunk constant number := 32766; -- maximum chunk size
v_offset number:=1;
OutPutFile utl_file.file_type;
vFile_name varchar2(1000):= Out_Img_Name||'.img';
vData raw(32767);
begin
OutPutFile := utl_file.fopen ('MY_DIR', vFile_name, 'ab', v_chunk);
-- 'ab' value for Write append, u can change as ur required.
--"Dpr_fileToBlob" is User defined procedure for this procedure Click Here
Dpr_fileToBlob(Fname => p_Image_Name,
Fdir => p_Source_Dir,
OutBlob => v_blob);
v_offset := 1;
v_data_length := DBMS_LOB.getlength (v_blob);
Loop
Exit When v_offset > v_data_length;
vData := DBMS_LOB.SUBSTR (v_blob, v_chunk, v_offset);
utl_file.put_raw (OutPutFile,vData , true);
v_offset := v_offset + v_chunk;
End Loop;
--End loop;
utl_file.fflush(OutPutFile);
utl_file.fclose_all;
Exception
when others then
utl_file.fflush(OutPutFile);
utl_file.fclose_all;
End Img_File_Gen_From_Flat_File;
/
No comments:
Post a Comment