Oracle - ENVIO DE DATOS A SPOOL

 
Vista:

ENVIO DE DATOS A SPOOL

Publicado por Manuel (11 intervenciones) el 23/03/2006 18:37:48
SI ALGUIEN ME PUEDE AYUDAR, POR FAVOR NECESITO SABER COMO ENVIO A UN SPOOL LA INFORMACION QUE ME RESULTA DE UN PL EN VARIAS VARIABLES, PERO NECESITO ENVIARLAS CONCATENADAS UNA CON LA OTRA A UN SPOOL.

TRATE DE HACERLO CON UN SELECT A||B||C FROM DUAL, Y ME DA ERROR.

SERA QUE SOLO PUEDO ENVIAR DATOS AL SPOOL CON UNA EXTRACCION DE DATOS DESDE UNA TABLA.

SI ALGUIEN TIENE UNA IDEA O RESPUESTA AL RESPECTO, LE AGRADEZCO ME LA ENVIE PREFERIBLEMENTE A MI CORREO, DE NO PODER SER ASI, ESTARE PENDIENTE EN ESTE FORO.

MUCHAS GRACIAS

MANUEL ROMERO
CARACAS - VENEZUELA.
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:ENVIO DE DATOS A SPOOL

Publicado por wolf (1 intervención) el 23/03/2006 20:00:18
Ahora mismo no lo encuentro los apuntes que tengo, pero creo q tienes que hacerlo de la siguiente manera:

1) Lanzas el spool (SQL> spool <fichero destino>
2) Realizas el select que decias
3) Paras el spool: spool out (o spool off).

Espero que esto te sirva.

Un saludo
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:ENVIO DE DATOS A SPOOL

Publicado por Manuel (11 intervenciones) el 24/03/2006 13:42:27
Exacto, el problema que estoy teniendo es que cuando el select es from dual debo dejar el resultado into (variable), pero no debo hacerlo asi, porque si es una gran cantidad de data, no la va a traer toda.

En cambio cuando hago un select desde la tabla silo hace perfectamente, ese es mi problema.

Lo que quiero es concatenar varios resultados e irlos enviando al spool . Ej.:

spool salida
select a||b||c from dual
spool out
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:ENVIO DE DATOS A SPOOL

Publicado por Dave (16 intervenciones) el 24/03/2006 18:50:00
Saludos:

Puedes utillizar el paquete utl_file de la aplicacion, que es exclusivo para crear archivos planos desde PL/SQL, pero requiere de cierta configuracion en unas variables de ambiente (archivo init*.ora).

Exitos.
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:ENVIO DE DATOS A SPOOL

Publicado por JSL (186 intervenciones) el 24/03/2006 18:58:44
set serveroutput on

spool c:\prueba.001

declare
cadena varchar2(20);
begin
dbms_output.enable(1000000000);
select to_char(sysdate,'ddmmyyyy hh24miss') into cadena from dual;
dbms_output.put_line('La fecha de hoy es: '||cadena);
end;
/

spool off
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:ENVIO DE DATOS A SPOOL

Publicado por Manuel (2 intervenciones) el 24/03/2006 19:02:27
ESTO EXACTAMENTE FUE LO QUE HICE, PERO SI LA DATA DE SALIDA ES MUY GRANDE O LA LONGITUD DE LOS DATOS CONCATENADOS ES SUPERIOR A 255, VOY A TENER PROBLEMAS.

ESO ES EXACTAMENTE LO QUE QUIERO SABER COMO HAGO PARA ENVIAR ESTO SIN RESTRICCIONES DE CANTIDAD DE REGISTROS O ANCHO DE REGISTRO.
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:ENVIO DE DATOS A SPOOL

Publicado por JSL (186 intervenciones) el 24/03/2006 19:20:20
Utiliza UTL_FILE
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:ENVIO DE DATOS A SPOOL

Publicado por el_diablo (16 intervenciones) el 29/03/2006 00:27:04
Esto lo haces con sql directamente en sql plus
o lo haces en plsql?
o lo haces en una aplicacion,
Si lo haces con sql, hay un parametro que se llama linesize en opcions
de sqlplus ahi le pones el tamaño adecuado mayor de 255 o lo que necesites
y aumentas el buffer , eso esta en la misma ventana de opcions.
y luego haces lo que te recomendaron spool archivo....

si lo haces con plsql tienes que usar un cursor

declare
cursor c1 is
-- aqui colocas tu consulta
select ....
from ....
where... ;
defines un registro que tenga todos los campos
r1 c1%rowtype;
begin
--- luego abres el cursor
-- lo mas facil es con un for
-- revisa sintaxis del for que no me acuerdo exactamente
for r1 in c1 loop
aqui mandas al spool r1 haciendo referencia a cada campo
esto puede ser a un archivo cualquiera
end loop;
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:ENVIO DE DATOS A SPOOL

Publicado por Dave (16 intervenciones) el 27/03/2006 20:19:51
Saludos:

en las versiones inferiores a la 10g, tiene restriccion de 1.000.000 de bytes. en 10g, se que es unlimitted.

Amigo, le sugiero utilizar utl_file.

Suerte.
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