Ver Mensaje Individual
  #7 (permalink)  
Antiguo 24/08/2006, 09:59
Avatar de Linterns
Linterns
Colaborador
 
Fecha de Ingreso: diciembre-2001
Mensajes: 2.799
Antigüedad: 22 años, 5 meses
Puntos: 11
El spool solo lo puedes ocupar en el SQL; silo que deseas es crear un procedimiento es mejor que utilices el UTL_FILE

Ejemplo mandando como parametro el path y nombre del archivo

Código:
create or replace procedure miescritura (
  path       in varchar2,
  filename   in varchar2)
is
    output_file  utl_file.file_type;
begin
    output_file := utl_file.fopen (path,filename, 'W');

    utl_file.put_line (output_file, 'mi primera fila escrita');
    utl_file.put_line (output_file, 'mi segunda fila de prueba');
    utl_file.fclose(output_file);
end;
Ojo, recuerda que debes tener creado nombres de directorios con privilegios de lectura, escritura para el usuario que ejecutara el procedimiento:

Código:
create or replace directory dir_temp as 'c:\temp';
ahora supongamos que tienes creado tu directorio y ya le has dado los privilegios... tu consulta la haria algo mas o menos asi:

Código:
Create or Replace Procedure Mytest is
Cursor MyCursor is 
   Select lpad(count(1),12,'0')||lpad(sum(monto),18,'0')||'0 0'||'R'||''  Mydata
   from dato;
MyArchivo varchar2(20) default to_char(sysdate, 'YYYYMMDD');
Begin

   output_file := utl_file.fopen ('dir_temp',MyArchivo, 'W');  
   For j in MyCursor loop
       utl_file.put_line (MyArchivo, j.Mydata);
   End Loop;
   utl_file.fclose(MyArchivo);
End;
__________________
Bien se puede recibir una puñalada sin adulación,
pero rara vez se recibe una adulación sin puñalada
** ***