From: dba cjb on
I would like to pass a variable into a spool command so that a
different report is created depending on the time of the create

The pseudo code would be

@1=name || || to_char ( date etc )

spool @1

Does anyone know how I can achieve this using pl/sql & or substition
variables


My aim is to timestamp the name of my reports

regards
Chris B
From: Kay Kanekowski on
Hi Chris,

try something like this
def spoolfile

col currentsysdate NEW_VALUE spool_file_timestamp

select '<your_spoolfile_prefix>' || to_char(sysdate,
'yyyy_dd_mm_hh24miss' ) currentsysdate
from dual;

def spoolfile

hth
Kay
From: gazzag on
On 30 June, 16:22, dba cjb <chris.br...(a)providentinsurance.co.uk>
wrote:
> I would like to pass a variable into a spool command so that a
> different report is created depending on the time of the create
>
> The pseudo code would be
>
> @1=name ||  || to_char ( date etc )
>
> spool @1
>
> Does anyone know how I can achieve this using pl/sql & or substition
> variables
>
> My aim is to timestamp the name of my reports
>
> regards
> Chris B

The SPOOL command is a SQL*Plus command, not a SQL one. I would set
an environment variable at OS level and the shell will expand this
correctly within your SQL script. For example, on a UNIX system, one
could do:

$ export LOG_FILE=script_name_`date +"%d%m%y"`

Then, in SQL*Plus:

SQL> SPOOL $LOG_FILE

etc...


HTH
-g
From: gazzag on
On 1 July, 10:31, gazzag <gar...(a)jamms.org> wrote:
>
> The SPOOL command is a SQL*Plus command, not a SQL one.  I would set
> an environment variable at OS level and the shell will expand this
> correctly within your SQL script.  For example, on a UNIX system,  one
> could do:
>
> $ export LOG_FILE=script_name_`date +"%d%m%y"`
>
> Then, in SQL*Plus:
>
> SQL>  SPOOL $LOG_FILE
>
> etc...
>
> HTH
> -g-

Additionally, in a Windows environment, you can do the following:

Windows now provides an enhancement to the DATE functionality which is
handy for time-stamping log files.

For example:

C:\>echo %DATE%
01/07/2010

Windows provides the following functionality to reformat the output:

echo %DATE:~<start_position> , <number_of_characters>% (Note:
<start_position> starts counting from zero)

E.g.

To display just the year portion of the output:

C:\>echo %DATE:~6,4%
2010

To display the month:

C:\>echo %DATE:~3,2%
07

And the day of the month:

C:\>echo %DATE:~0,2%
01

So, to generate a log file with the format <script_name>_ddmmyy.log,
set an environment variable as follows:

C:\>set LOG_FILE=script_%date:~0,2%%date:~3,2%%date:~8,2%.log

C:\>echo %LOG_FILE%
script_010710.log

This environment variable will be expanded correctly within a SQL*Plus
session:

SYSTEM(a)XE> spool %LOG_FILE%
SYSTEM(a)XE> select sysdate from dual;

SYSDATE
------------------
01-Jul-10 10:57:16

SYSTEM(a)XE> spool off

C:\>dir *.log

01/07/2010 10:57 430 script_010710.log

C:\>type script_010710.log
SYSTEM(a)XE> select sysdate from dual;

SYSDATE

------------------

01-Jul-10 10:57:16


SYSTEM(a)XE> spool off

HTH
-g
From: Shakespeare on
Op 1-7-2010 17:20, gazzag schreef:
> On 1 July, 10:31, gazzag<gar...(a)jamms.org> wrote:
>>
>> The SPOOL command is a SQL*Plus command, not a SQL one. I would set
>> an environment variable at OS level and the shell will expand this
>> correctly within your SQL script. For example, on a UNIX system, one
>> could do:
>>
>> $ export LOG_FILE=script_name_`date +"%d%m%y"`
>>
>> Then, in SQL*Plus:
>>
>> SQL> SPOOL $LOG_FILE
>>
>> etc...
>>
>> HTH
>> -g-
>
> Additionally, in a Windows environment, you can do the following:
>
> Windows now provides an enhancement to the DATE functionality which is
> handy for time-stamping log files.
>
> For example:
>
> C:\>echo %DATE%
> 01/07/2010
>
> Windows provides the following functionality to reformat the output:
>
> echo %DATE:~<start_position> ,<number_of_characters>% (Note:
> <start_position> starts counting from zero)
>
> E.g.
>
> To display just the year portion of the output:
>
> C:\>echo %DATE:~6,4%
> 2010
>
> To display the month:
>
> C:\>echo %DATE:~3,2%
> 07
>
> And the day of the month:
>
> C:\>echo %DATE:~0,2%
> 01
>
> So, to generate a log file with the format<script_name>_ddmmyy.log,
> set an environment variable as follows:
>
> C:\>set LOG_FILE=script_%date:~0,2%%date:~3,2%%date:~8,2%.log
>
> C:\>echo %LOG_FILE%
> script_010710.log
>
> This environment variable will be expanded correctly within a SQL*Plus
> session:
>
> SYSTEM(a)XE> spool %LOG_FILE%
> SYSTEM(a)XE> select sysdate from dual;
>
> SYSDATE
> ------------------
> 01-Jul-10 10:57:16
>
> SYSTEM(a)XE> spool off
>
> C:\>dir *.log
>
> 01/07/2010 10:57 430 script_010710.log
>
> C:\>type script_010710.log
> SYSTEM(a)XE> select sysdate from dual;
>
> SYSDATE
>
> ------------------
>
> 01-Jul-10 10:57:16
>
>
> SYSTEM(a)XE> spool off
>
> HTH
> -g

Positions in the date string may vary for different languages....

Shakespeare
 |  Next  |  Last
Pages: 1 2
Prev: CREATE OR REPLACE FUNCTION problem
Next: SQL alteration