samerselo
СПАСИБО МНЕ НАКОНЕЦ УДАЛОСЬ ЭТО СДЕЛАТЬ
ВОТ МОЯ ПРОЦЕДУРА ПОЖАЛУЙСТА ПОСОВЕТУЙТЕ ЕСЛИ ЕСТЬ ЛУЧШИЙ СПОСОБ
CREATE OR REPLACE PROCEDURE SAVE_FINGERS (
p_directory IN VARCHAR2
)
IS
v_blob BLOB;
v_start NUMBER := 1;
v_bytelen NUMBER := 2000;
v_len NUMBER;
v_raw RAW (2000);
v_x NUMBER;
v_output UTL_FILE.file_type;
v_file_name VARCHAR2 (200);
BEGIN
FOR i IN (SELECT DBMS_LOB.getlength (FINGERPRINT) v_len, CARD_NUMBER v_file_name,
FINGERPRINT v_blob
FROM RECEPT_CARDS)
LOOP
v_output := UTL_FILE.fopen (p_directory, i.v_file_name || '.JPG', '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);
UTL_FILE.put_raw (v_output, v_raw);
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;
UTL_FILE.fclose (v_output);
END LOOP;
END SAVE_FINGERS;