CREATE OR REPLACE PACKAGE mip_virus_check IS -- Author : HARDYA -- Created : 23/01/2008 09:55:52 -- Purpose : Virus checking package PROCEDURE write_file(p_name IN wwv_flow_files.NAME%TYPE ,p_location IN VARCHAR2 DEFAULT 'WEBMIP_VIRUS' ,p_fs_name IN VARCHAR2); END mip_virus_check; / CREATE OR REPLACE PACKAGE BODY mip_virus_check IS PROCEDURE write_file(p_name IN wwv_flow_files.NAME%TYPE ,p_location IN VARCHAR2 DEFAULT 'WEBMIP_VIRUS' ,p_fs_name IN VARCHAR2) IS l_lob_loc BLOB; l_buffer RAW(32767); l_buffer_size BINARY_INTEGER; l_amount BINARY_INTEGER; l_offset NUMBER(38) := 1; l_chunksize INTEGER; l_out_file utl_file.file_type; BEGIN SELECT blob_content INTO l_lob_loc FROM wwv_flow_files WHERE NAME = p_name; l_chunksize := dbms_lob.getchunksize(l_lob_loc); IF (l_chunksize < 32767) THEN l_buffer_size := l_chunksize; ELSE l_buffer_size := 32767; END IF; l_amount := l_buffer_size; dbms_lob.OPEN(l_lob_loc ,dbms_lob.lob_readonly); l_out_file := utl_file.fopen(location => p_location ,filename => p_fs_name ,open_mode => 'wb' ,max_linesize => 32767); WHILE l_amount >= l_buffer_size LOOP dbms_lob.READ(lob_loc => l_lob_loc ,amount => l_amount ,offset => l_offset ,buffer => l_buffer); l_offset := l_offset + l_amount; utl_file.put_raw(file => l_out_file ,buffer => l_buffer ,autoflush => TRUE); --utl_file.fflush(file => l_out_file); END LOOP; utl_file.fflush(file => l_out_file); utl_file.fclose(l_out_file); dbms_lob.CLOSE(l_lob_loc); END write_file; BEGIN -- Initialization NULL; END mip_virus_check; /