- 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:
y lo ejecuto de la siguiente manera:Ver original
CREATE 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;
Código SQL:
pero me resulta un error, cuando el archivo sobrepasa la longitud de 32760 me sale el error en las lineas:Ver original
BEGIN extract_file2('archivo.txt'); END;
Código SQL:
Serio ya intente de 1000 formas, seguire intentando pero si alguien ya le sucedio lo mismo por favor ayudenme!!! es bastante urgente!!!Ver original
dbms_lob.READ(vblob,bytelen,vstart,my_vr); utl_file.fflush(l_output);
informarles tambien que me sale el siguiente error:
Cita:
Saludos!!! 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
ORA-06512: at "SYS.UTL_FILE", line 984
ORA-06512: at "SENATI.EXTRACT_FILE2", line 38
ORA-06512: at line 2