Save Images in Database
Declare
FileName Varchar2(256);
Begin
FileName := Get_FILE_NAME(File_Filter=> 'JPEG Files (*.JPG)|*.JPG|');
Read_Image_File(FileName, 'JPG', 'distribution_logo');
End;
Download Images From Database to Directory
CREATE OR REPLACE PROCEDURE HR0216.DOWNLOAD_IMAGES (
p_directory IN VARCHAR2,
empid_from IN NUMBER,
empid_to IN NUMBER
)
IS
v_blob BLOB;
v_start NUMBER := 1;
v_bytelen NUMBER := 2000;
v_len NUMBER;
v_raw RAW (2000);
v_x NUMBER;
v_output SYS.UTL_FILE.file_type;
v_file_name VARCHAR2 (200);
BEGIN
FOR i IN (SELECT DBMS_LOB.getlength (PICTURE) v_len, EMPLOYEE_ID v_file_name,
PICTURE v_blob
FROM smfimages.HRIMAGES WHERE employee_id between empid_from and empid_to --114735
)
LOOP
v_output := SYS.UTL_FILE.fopen (p_directory, i.v_file_name || '.TIFF', 'wb', 32760);
v_x := i.v_len;
v_start := 1;
v_bytelen := 2000;
WHILE v_start < i.v_len AND v_bytelen > 0
LOOP
DBMS_LOB.READ (i.v_blob, v_bytelen, v_start, v_raw);
SYS.UTL_FILE.put_raw (v_output, v_raw);
SYS.UTL_FILE.fflush (v_output);
v_start := v_start + v_bytelen;
v_x := v_x - v_bytelen;
IF v_x < 2000
THEN
v_bytelen := v_x;
END IF;
END LOOP;
SYS.UTL_FILE.fclose (v_output);
END LOOP;
END DOWNLOAD_IMAGES;
/