Le variabili di sostituzione sono facoltativamente terminate da un punto per separarli da tutti i caratteri che seguono. Se vuoi usarne anche uno nella stringa, devi aggiungere esplicitamente quella terminazione:
spool E:\abc\Test\File1_&MYPeriod..csv
Per il problema delle due righe extra, aggiungi set verify off
; al momento è impostato su on
(per impostazione predefinita) quindi mostra il vecchio e il nuovo valore di qualsiasi variabile di sostituzione che utilizzi.
L'unico modo che conosco per ottenere la data nel nome del file è inserirla prima in una variabile di sostituzione:
set termout off
column x_run_dt new_value y_run_dt
select to_char(sysdate, 'YYYYMMDDHH24MISS') as x_run_dt from dual;
set termout on
spool E:\abc\Test\File1_&MYPeriod._&y_run_dt..csv
Il new_value
La clausola ti consente di creare una variabile di sostituzione, &y_run_dt
in questo caso, con un valore da una colonna interrogata, x_run_dt
. Avvolgere la selezione che genera quel valore tra set termout
clausole lo nasconde dall'output normale, quando viene eseguito come script.