Oracle - crear archivo .txt desde Oracle

 
Vista:

crear archivo .txt desde Oracle

Publicado por Pedro (28 intervenciones) el 23/01/2004 15:04:59
¿ Cómo puedo hacer para crear un archivo .txt con un PL de Oracle?

Muchas Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:crear archivo .txt desde Oracle

Publicado por Daniel Rodas (21 intervenciones) el 23/01/2004 21:23:30
Hola, espero te sirva esto:

PROCEDURE genera IS
linea varchar2(400); /* Linea a insertar en el archivo de texto */
/* Esta variable tiene que tener el tamaño exacto de lo que suman los campos que vas a insertar, */
/* Sino, te da un error FRM 4035 parameter truncated at execution */
archi Text_IO.File_Type; /* nombre interno del archivo */
c1 number; /* Lleva el conteo de cuantos registros hay */
fchar char(23); /* Fecha para meter en archivo */
hora char(8); /* Hora para meter en archivo */
numcta char(20); /* # de la cuenta para meter en archivo */
nomcta char(60); /* Nombre de la cuenta para meter en archivo */
total_q number(18,2);
total_d number(18,2);
tot_qc char(20); /* Valor en Q para meter en archivo */
tot_dc char(20); /* Valor en US$ para meter en archivo */
agencia char(3); /* Codigo de agencia para meter en archivo */
ref char(40); /* Referencia para meter en archivo */
suma_q number(18,2);
suma_d number(18,2);
suma_qc char(20); /* Valor de sumatoria en Q para meter en archivo */
suma_dc char(20); /* Valor de sumatoria en US$ para meter en archivo */

-- CURSOR tran IS
-- Aqui va un select de lo que quieras insertar en el archivo
-- Los datos que se meten en el archivo pueden o no ser de un select
-- Si los datos que necesitas no van a ser de un select entonces no uses esta parte
BEGIN
c1 := 0;
/* Si no vas a usar select entonces aqui antes del ciclo de llenado tienes que capturar los datos que necesites */
/* y ponerlos en las variables que has definido para el efecto */
SET_APPLICATION_PROPERTY(CURSOR_STYLE,'BUSY');
Begin
archi := Text_IO.Fopen('C:\REPORTES\EJEMPLO.TXT','w'); /* aqui creas el archivo como tal en el directorio especificado*/
If NOT TEXT_IO.IS_OPEN(archi) Then
message('Creación del archivo. No se puedo crear ERROR : '||sqlerrm);
SET_APPLICATION_PROPERTY(CURSOR_STYLE,'DEFAULT');
End If;

EXCEPTION WHEN OTHERS THEN
MESSAGE('ex1 - Ocurrio el Siguiente ERROR: '||sqlerrm);SYNCHRONIZE;
TEXT_IO.FCLOSE(archi);
SET_APPLICATION_PROPERTY(CURSOR_STYLE,'DEFAULT');
RAISE FORM_TRIGGER_FAILURE;
End;
Begin
-- Poniendo encabezados del archivo
linea := /* AQUI EN ESTA VARIABLE COCATENAS TODO LO QUE VAS A METER EN EL ARCHIVO*/
Text_IO.Put(archi, linea);
Text_IO.New_Line(archi);

Exception
When Others Then
Message('Ocurrio este error al tratar de poner encabezados al archivo : '||sqlerrm);
SET_APPLICATION_PROPERTY(CURSOR_STYLE,'DEFAULT');
RAISE FORM_TRIGGER_FAILURE;
End;

For i in tran loop
Begin
/* Aqui en esta parte van valores u operaciones que realizes con las variables antes de insertarlas, */
/* depende si necesitas hacer algun calculo o no, talvez con valores, fechas, etc */
-- Concatena los datos en una sola variable para meter en el archivo
linea := fchar||hora||' '||numcta||nomcta||tot_qc||tot_dc||agencia||' '||suma_qc||suma_dc;

EXIT WHEN tran%NOTFOUND; /* se sale cuando ya no encuentra datos que meter */
Text_IO.Put(archi, linea);
Text_IO.New_Line(archi);
c1 := c1 + 1;

Exception
When Others Then
Message('Ocurrio este error al ingresar cada linea al archivo : '||sqlerrm);
SET_APPLICATION_PROPERTY(CURSOR_STYLE,'DEFAULT');
RAISE FORM_TRIGGER_FAILURE;
End;
End Loop;
Text_IO.Fclose (archi);
SET_APPLICATION_PROPERTY(CURSOR_STYLE,'DEFAULT');
END;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Cadena Variable.

Publicado por Pedro (28 intervenciones) el 26/01/2004 17:06:21
DAniel
Ante todo Gracias por tu ayuda.
El problema que se me presenta : Tengo que generar un Archivo Txt Pero cuyo tamaño de linea es variable porque la aplicación que lo recibe ( Un Predictivo) no acepta espacios en blanco ni adelante ni atrás del dato.
Cualquier cosa ayudita te la voy a agradecer.

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Cadena Variable.

Publicado por Daniel Rodas (21 intervenciones) el 27/01/2004 18:07:03
Bueno te sugiero que hagas la variable para recibir los datos como varchar2 de un tamaño muy, muy grande y en esa forma, si usa el espacio pues que bien y sino lo usa pues lo ahorra.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:crear archivo .txt desde Oracle

Publicado por Jorge (1 intervención) el 25/02/2010 16:44:11
Esta super bueno este procedure, se podra hacer lo mismo, sea generar un archivo.xml
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:crear archivo .txt desde Oracle

Publicado por marco (1 intervención) el 23/06/2020 17:49:24
Cómo puedo hacer para que al generar el archivo .txt éste no sea modificable o que tenga una palabra clave para poder editarlo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar