2009-07-21 7 views
0

Je veux faire cela dans SQLPlus: définir un fichier qui contient la date du jour dans son nom et spooler la sortie d'une instruction SQL dans ce fichier. Je sais comment spouler la sortie d'une instruction SQL dans un fichier. Je ne sais pas comment déclarer le nom du fichier en tant que variable contenant la date du jour. Par exemple, sélectionnez toutes les lignes avec l'horodatage du jour de la table ERROR et affichez les résultats dans un fichier appelé TODAYS_ERRORS_YYYYMMDD.log.Définition de variable SQLPlus

J'utilise un fichier BAT qui invoque SQL plus comme suit:

sqlplus -silent user/[email protected] @c:\temp\error_query.sql 

Je suis en mesure d'exécuter le fichier de chauve-souris au-dessus et sortir les succès des lignes à un fichier avec un nom de fichier statique, comme TODAYS_ERRORS.log . Je ne sais pas comment déclarer le nom du fichier afin qu'il contienne la date du jour dans son nom.

Voici comment mon fichier error_query.sql ressemble en ce moment:

set feedback off; 
set echo off; 

spool c:\temp\TODAYS_ERRORS.log 

SELECT created_time  AS "Created Time", 
     error_severity AS "Severity", 
     error_desc  AS "Error Text" 
FROM ERROR 
WHERE 
    to_date(to_char(created_time,'YYYYMMDD') = to_date(to_char(sysdate,'YYYYMMDD'); 

spool off; 
exit; 

Répondre

0

Vous pouvez créer un nom dynamique pour votre fichier de spool comme suit:

col datum new_value today 
select to_char(sysdate,'YYYYMMDD') as datum from dual; 

set heading off 
set linesize 128 
set echo off 
set feedback off 

spool today_&today..log 
rem Your query here ...  
select ... 
/
spool off 
Questions connexes