Newsgroup: it.comp.software.database
Titolo: Help per file di spool

Ho il seguente problema :
ho creato un file batch che mi deve lanciare uno script sql, vorrei
inserire nel nome del file di spool la data corrente del sistema, come
fare ?
ES:
spool pippo_?.txt
....
...
spool off
in definitiva vorrei che il file di spool avesse la data del sistema es
pippo_20050301.txt
IL S.O. WINDOWS XP
 Ringrazio anticipatamente a chi mi volesse rispondere

Mentre cercavo di capire la differenza tra una select e un drop database,
lucius ha scritto:

Ciao, 
Su windows ho paura che sei costretto ad usare il package UTL_FILE
all'interno di un'altro script sql in cui definisci il nome del file di spool.
A meno che non mi stia sfuggendo qualche particolare opzione di DEFINE 
di sqlplus. Eventuali smentite sono benvenute :)
ciao

 IL S.O. WINDOWS XP
La scritta "SPOOL pippo_20050301.txt" la vuoi generare da sql o da batch 
(immagino .bat o .cmd) ??
Nel primo caso puoi usare
select 'spool pippo_'||to_char(sysdate,'YYYYMMDD')||'.txt' from dual;
nel secondo caso utilizzi la variabile %DATE% (che su XP vale qualcosa 
di simile a 31/03/2005, mentre su W2k vale gio 31/03/2005) e te la 
giostri con un FOR (vedi FOR /?) per generare una "tua" variabile (es. %
MYDATE%) e poi 
echo SPOOL pippo_%MYDATE%.txt > NomeDelloScript.sql
Era cosi' difficile ??
HTH
Byez
Stefano

Mentre cercavo di capire la differenza tra una select e un drop database,
Xtefano ha scritto:

scusa, premetto che di windows non capisco nulla, ma con il tuo
consiglio ottieni un file che contiene la stringa "SPOOL pippo eccecc".
A cosa gli servirebbe a lucius??
Lui vuole gestire in modo "dinamico" il comando SPOOL all'interno di
sqlplus, questo per lo meno ho capito io.
ciao

 sqlplus, questo per lo meno ho capito io.
... ed in questo caso userebbe la prima soluzione.
Se invece volesse costruire lo script sql in altro modo dal batch 
potrebbe usare la seconda.
Piu' chiaro ora ??
Byez ;)
Stefano



Stefano, continuo il thread perchè *realmente* non 
riesco a capire...vabbè che è venerdì :)
Allora con la select si ottiene questo:
SQL> select 'spool pippo_'||to_char(sysdate,'dd-mm-yy')||'.txt' from dual;
 
'SPOOLPIPPO_'||TO_CHAR(S
------------------------
spool pippo_01-04-05.txt
cosa se ne fa??
mica da adesso in poi il risultato di qualsivoglia script viene scritto
nel file pippo_01-04-05.txt!
Lucius ha bisogno di inizializzare il comando
SPOOL nomefile_DATADIOGGI.txt e poi lanciare un .sql
all'interno della stessa sessione sqlplus.
Ripeto: mi sfugge come poi reindirizzeresti l'output del
.sql dentro il file di nome pippo_ecc.ecc (che non esiste)!!
ciao

 .sql dentro il file di nome pippo_ecc.ecc (che non esiste)!!
esempio 1: batch (.bat) che crea uno script
(tralascio per velocita' il ciclo FOR che trasforma la %DATE% in %
MYDATE% nel formato che voglio)
echo spool pippo_%MYDATE%.txt > x.sql
echo select ....... >> x.sql
echo spool off >> x.sql
echo exit >> x.sql
in questo modo hai uno script x.sql che contiene
spool pippo_20050401.txt
select ........
spool off
exit
lanciando x.sql si ottiene un file pippo_20050401.txt con l'output della 
select
-----------------------
esempio 2: script che crea uno script
spool x.sql
select 'spool pippo_'||to_char(sysdate,'YYYYMMDD')||'.txt' from dual;
select 'select ........ ' from dual;
select 'spool off' from dual;
select 'exit' from dual;
spool off
in questo modo hai uno script x.sql che contiene (come nell'altro caso)
spool pippo_20050401.txt
select ........
spool off
exit
lanciando x.sql (puoi mettere una @x.sql alla fine dello script di 
origine) si ottiene un file pippo_20050401.txt con l'output della select
In entrambi i casi lo script x.sql (che IMHO e' "usa e getta") puo' 
essere intanto posizionato nella %TEMP% (occhio agli spazi !!, usare i 
doppi apici) e comunque cancellato dopo l'utilizzo
dal .bat con un banale 
	del x.sql
dallo script di origine con
	$del x.sql
In attesa di commenti e/o chiarimenti da parte di lucius ...
HTH
Byez
Stefano

 Stefano
E' tutto chiaro......ma allora siamo d'accordo:
io gli avevo proposto la *stessissima* cosa ma utilizzando
il package UTL_FILE che serve appunto per scrivere direttamente
su file.......senza aggiungere nessuna spiegazione (pensando che
fosse chiaro..evidentemente sbagliavo).
Quello che mi sfuggiva era l'inserimento dell'sql all'interno del
file da lanciare con @nomefile.
Ok, passero' il fine settimana più felicemente  :)
ciao

 Ok, passero' il fine settimana più felicemente  :)
Sono contento per te. Nel mio caso non e' stato uno dei weekend piu' 
felici .... :(
Byez
Stefano

 
non è stato in assoluto un bel we.
ciao

 ciao