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;