hola amigos, mi necesidad es que tengo una aplicacion web
-
Primero: subo archivos txt y los guardo en mi base de Datos Oracle
-
Segundo: en otro punto de mi intranet hay otra persona que necesita recuperar esos archivos y guardarlo en una carpeta especifica.
ya solucione la primera parte ya guardo bien mi archivo, lo hace excelente; ahora mi problema es en la segunda parte:
tengo el siguiente procedimiento en Oracle
Código SQL:
Ver originalCREATE OR REPLACE PROCEDURE SENATI.extract_file2(str_file_name IN VARCHAR) IS
vblob BLOB;
vstart NUMBER := 1;
bytelen NUMBER := 32760;
len NUMBER;
my_vr RAW(32760);
x NUMBER;
l_output utl_file.file_type;
BEGIN
l_output := utl_file.fopen('DIRECTORIO', str_file_name,'w', 32760);
vstart := 1;
bytelen := 32760;
SELECT dbms_lob.getlength(BLOB_CONTENT)
INTO len
FROM wwv_flow_file_objects$
WHERE filename = str_file_name;
-- save blob length
x := len;
-- select blob into variable
SELECT BLOB_CONTENT
INTO vblob
FROM wwv_flow_file_objects$
WHERE filename = str_file_name;
-- if small enough for a single write
IF len < 32760 THEN
utl_file.put_raw(l_output,vblob);
utl_file.fflush(l_output);
ELSE -- write in pieces
vstart := 1;
WHILE vstart < len AND bytelen > 0
LOOP
dbms_lob.READ(vblob,bytelen,vstart,my_vr);
utl_file.fflush(l_output);
utl_file.put_raw(l_output,my_vr);
-- set the start position for the next cut
vstart := vstart + bytelen;
-- set the end position if less than 32760 bytes
x := x - bytelen;
IF x < 32760 THEN
bytelen := x;
END IF;
utl_file.fclose(l_output);
END loop;
END IF;
END;
y lo ejecuto de la siguiente manera:
Código SQL:
Ver originalBEGIN
extract_file2('archivo.txt');
END;
pero me resulta un error, cuando el archivo sobrepasa la longitud de 32760 me sale el error en las lineas:
Código SQL:
Ver originaldbms_lob.READ(vblob,bytelen,vstart,my_vr);
utl_file.fflush(l_output);
Serio ya intente de 1000 formas, seguire intentando pero si alguien ya le sucedio lo mismo por favor ayudenme!!! es bastante urgente!!!
informarles tambien que me sale el siguiente error:
Cita: ORA-29282: invalid file ID
ORA-06512: at "SYS.UTL_FILE", line 984
ORA-06512: at "SENATI.EXTRACT_FILE2", line 38
ORA-06512: at line 2
Saludos!!!