Message-Id: <10485.104659@fatcity.com> From: Benhayoune khalid Date: Tue, 2 May 2000 10:18:22 -0000 Subject: RE: Spooling SQL*Plus output to a unique file name (Unix) This message is in MIME format. Since your mail reader does not understand this format, some or all of this message may not be legible. ------ =_NextPart_001_01BFB41F.BF3B3000 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Excuse my poor english ! Try this SQL script : column spool_id noprint new_value v_spool_id select to_char(sysdate,'hh24miss') spool_id from dual; spool &&v_spool_id ... your PL/SQL bloc(s) ... spool off Note : since you are in a UNIX environment, you can also use the SHELL possibilities to do this. regards. -----Message d'origine----- De : Patricia Clarke [mailto:pclarke@mach2.wlu.ca] Envoy=E9 : mar. 2 mai 2000 00:34 =C0 : Multiple recipients of list ORACLE-L Objet : Spooling SQL*Plus output to a unique file name (Unix) Oracle 7.3.4, Dynix 4.2.3, SQL*Plus 3.3.4, PL/SQL 2.3.4 I have a PL/SQL script that I am running on the server (Unix) and I am spooling the output into a log file. The problem is that I don't want to lose the previous output each time I run the script, so I want to be able to either spool to a unique file name each time (e.g. by appending a timestamp or the process ID or something to the log file name), or keep the same file name but *append* the new output to the old instead of overwriting everything each time. I have read the SQL*Plus documentation on the SPOOL command and don't see any options for appending output to an existing file instead of overwriting, so I'm guessing that's not possible... So, I guess I am looking to do something like: DECLARE unique_file_name VARCHAR2(18); ... BEGIN ... SELECT to_char(sysdate,'YYYYMMDDHHMISS')||'.log' INTO unique_file_name FROM dual; ... SPOOL unique_file_name ... SPOOL OFF END; But, this doesn't work because Oracle doesn't like the SPOOL statements within the PL/SQL block, but if I take them out of the PL/SQL block, I get a log file called unique_file_name.lst rather than 20000501103013.log (or whatever). I'm probably missing something stupid here, but can't seem to get any further... Thanks very much for any ideas, Patricia ******************************************** Patricia Clarke Systems Analyst -- Information Systems Wilfrid Laurier University 75 University Ave. W. Waterloo, Ontario, Canada N2L 3C5 E-mail: pclarke@mach2.wlu.ca ******************************************** --=20 Author: Patricia Clarke INET: pclarke@mach2.wlu.ca Fat City Network Services -- (858) 538-5051 FAX: (858) 538-5051 San Diego, California -- Public Internet access / Mailing Lists -------------------------------------------------------------------- To REMOVE yourself from this mailing list, send an E-Mail message to: ListGuru@fatcity.com (note EXACT spelling of 'ListGuru') and in the message BODY, include a line containing: UNSUB ORACLE-L (or the name of mailing list you want to be removed from). You may also send the HELP command for other information (like subscribing). ------ =_NextPart_001_01BFB41F.BF3B3000 Content-Type: text/html; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable RE: Spooling SQL*Plus output to a unique file name = (Unix)

Excuse my poor english !

Try this SQL script :

column spool_id noprint new_value v_spool_id
select to_char(sysdate,'hh24miss') spool_id from = dual;
spool &&v_spool_id
...
your PL/SQL bloc(s)
...
spool off

Note : since you are in a UNIX environment, you can = also use the SHELL possibilities to do this.

regards.


-----Message d'origine-----
De : Patricia Clarke [mailto:pclarke@mach2.wlu.ca]
Envoy=E9 : mar. 2 mai 2000 00:34
=C0 : Multiple recipients of list ORACLE-L
Objet : Spooling SQL*Plus output to a unique file = name (Unix)


Oracle 7.3.4, Dynix 4.2.3, SQL*Plus 3.3.4, PL/SQL = 2.3.4

I have a PL/SQL script that I am running on the = server (Unix) and I am
spooling the output into a log file.  The = problem is that I don't want to
lose the previous output each time I run the script, = so I want to be able to
either spool to a unique file name each time (e.g. = by appending a timestamp
or the process ID or something to the log file = name), or keep the same file
name but *append* the new output to the old instead = of overwriting
everything each time.

I have read the SQL*Plus documentation on the SPOOL = command and don't see
any options for appending output to an existing file = instead of overwriting,
so I'm guessing that's not possible...

So, I guess I am looking to do something like:

DECLARE unique_file_name VARCHAR2(18);
...
BEGIN
   ...
   SELECT = to_char(sysdate,'YYYYMMDDHHMISS')||'.log'
   INTO unique_file_name
   FROM dual;
   ...
   SPOOL unique_file_name
   ...
   SPOOL OFF
END;

But, this doesn't work because Oracle doesn't like = the SPOOL statements
within the PL/SQL block, but if I take them out of = the PL/SQL block, I get a
log file called unique_file_name.lst rather than = 20000501103013.log (or
whatever).

I'm probably missing something stupid here, but can't = seem to get any
further...

Thanks very much for any ideas,
Patricia

********************************************
Patricia Clarke
Systems Analyst -- Information Systems
Wilfrid Laurier University
75 University Ave. W.
Waterloo, Ontario, Canada  N2L 3C5
E-mail: pclarke@mach2.wlu.ca
********************************************

--
Author: Patricia Clarke
  INET: pclarke@mach2.wlu.ca

Fat City Network Services    -- (858) = 538-5051  FAX: (858) 538-5051
San Diego, = California        -- Public Internet = access / Mailing Lists
---------------------------------------------------------------= -----
To REMOVE yourself from this mailing list, send an = E-Mail message
to: ListGuru@fatcity.com (note EXACT spelling of = 'ListGuru') and in
the message BODY, include a line containing: UNSUB = ORACLE-L
(or the name of mailing list you want to be removed =