oracle - ejemplo de meta descripciones
Escribir contenidos en UTL_FILE inmediatamente después de una única iteración (1)
Tengo PL / SQL Block, consulta desde una función de tabla y uso un cursor para procesarlo, registro por registro, tengo un poco de lógica de negocios y finalmente escribo los registros calificados en el archivo.
El número de registros a procesar es de hasta 1 millón. Y la velocidad de procesamiento total es de aproximadamente 10000 registros por minuto. (Después de probar con pocos fragmentos de datos)
Ahora, necesito indicar el estado del procesamiento en un entorno diferente, JSP.
DECLARE
vSFile utl_file.file_type;
vNewLine VARCHAR2(200);
my_cursor IS SELECT * FROM MYTABLE;
my_details my_cursor%rowtype;
BEGIN
vSFile := utl_file.fopen(''ORALOAD'', file_name,''r'');
IF utl_file.is_open(vSFile) THEN
utl_file.get_line(vSFile, vNewLine);
OPEN my_cursor;
LOOP
FETCH my_cursor INTO my_details;
EXIT WHEN sll_cur%NOTFOUND;
-- Do processing
utl_file.putf(logfile,''%s '',my_details);
-- A info tht record completed!
END LOOP;
CLOSE logfile;
CLOSE my_cursor;
END IF;
EXCEPTION
WHEN OTHERS THEN
--Error handling
END;
/
La información de registro escrita aquí, no está disponible hasta la finalización del proceso. Por lo tanto, no puedo rastrear, hasta qué punto se completa. ¿Puede alguien ayudarme en esto?
Para escribir datos en el archivo, debe usar el procedimiento FFLUSH. Por ejemplo:
OPEN my_cursor;
LOOP
FETCH my_cursor INTO my_details;
EXIT WHEN sll_cur%NOTFOUND;
-- Do processing
utl_file.putf(logfile,''%s '',my_details);
-- Call the FFLUSH proc here..And contents are available immediately.
utl_file.FFLUSH(logfile);
END LOOP;
De la documentación:
FFLUSH
escribe físicamente datos pendientes en el archivo identificado por el identificador de archivo. Normalmente, los datos que se escriben en un archivo se almacenan en el búfer. El procedimientoFFLUSH
obliga a escribir los datos almacenados en el archivo. Los datos deben terminarse con un carácter de nueva línea.El enjuague es útil cuando el archivo debe leerse mientras está abierto. Por ejemplo, los mensajes de depuración se pueden descargar al archivo para que puedan leerse inmediatamente.
Hay más información sobre UTL_FILE
en los documentos de Oracle .