2009-10-06 11 views
0

Je suis très nouveau à Oracle.J'ai besoin de créer un fichier avec l'horodatage du système d'Oracle. S'il vous plaît laissez-moi savoir comment je fais ça.Comment ajouter l'heure système au nom de fichier dans Oracle?

De plus je dois écrire les exceptions ou les erreurs lancées par mon code pl/sql dans un fichier et quitter après une erreur. Comment puis-je faire cela?

Merci, Priya.R

Répondre

1

Voici comment vous pouvez obtenir un nom de fichier dynamique dans SQL Plus

SET TERMOUT OFF 

DEFINE dynamic_filename = idle 
COLUMN which_dynamic NEW_VALUE dynamic_filename 

SELECT 'prefix_' 
     ||TO_CHAR(SYSDATE, 'YYYYMMDD') 
     ||'_' 
     ||TO_CHAR(SYSDATE, 'HH24MISS') 
     ||'.log' which_dynamic 
    FROM dual; 

SET TERMOUT ON 

SPOOL &dynamic_filename 

SELECT * FROM dual; 

SPOOL OFF 

Le fichier est créé dans le répertoire par défaut pour SQL Plus (sur les fenêtres c'est la « Démarrer dans: » la propriété du raccourci)

pour placer la sortie dans un répertoire connu de modifier la commande SPOOL à quelque chose comme ...

SPOOL c:\output_dir\&dynamic_filename 

Pour obtenir un SQL Plus script sortie après une erreur incluent cette commande ...

WHENEVER SQLERROR EXIT SQL.SQLCODE ROLLBACK 
+0

OP a déclaré que cela devait être fait à partir de PL/SQL. C'est une solution SQL * Plus-centric qui ne fonctionnera pas en PL/SQL. – DCookie

+0

Pour DCookie - l'OP n'a pas déclaré que le fichier devait être créé à partir de PL/SQL, juste "d'Oracle". Ils ont ensuite déclaré qu'ils voulaient «écrire les exceptions ou les erreurs jetées par mon code pl/sql dans un fichier et sortir», j'en ai supposé que le PL/SQL était exécuté par SQL * Plus donc j'ai donc construit ma réponse correctement. –

+0

@Paul, point pris - la question n'est pas parfaitement claire. Je dirais, cependant, que "d'Oracle" n'est pas la même chose que "de SQL * Plus" (et SQL * Plus n'a jamais été mentionné), bien que certains ne voient pas la différence, comme c'est le cas avec l'OP. – DCookie

2

Il semble que vous voulez regarder dans le package fourni Oracle UTL_FILE, comme vous essayez d'utiliser PL/SQL pour créer le fichier.

Vous pouvez générer le fichier de cette façon:

(Vous devrez créer un répertoire Oracle d'abord, pointant vers l'emplacement du système d'exploitation du fichier:

CREATE OR REPLACE DIRECTORY DIR AS 'your OS directory'; 

Notez que le nom « DIR . »est utilisé dans l'exemple de code qui suit Vous aurez également besoin le privilège CREATE DIRECTORY, puis lire et autorisations accordez d'écriture sur le répertoire à l'utilisateur qui va l'utiliser:

GRANT READ,WRITE ON DIR TO user1; 

)

DECLARE 
    v_logfile VARCHAR2(100); 
    v_FH  UTL_FILE.FILE_TYPE; 
BEGIN 
    v_logfile := TO_CHAR(SYSDATE,'YYYYMMDD HH24MISS')||'_process.log'; 
    v_FH  := UTL_FILE.FOPEN(DIR, v_logfile, 'w'); 
    UTL_FILE.PUTLINE(v_FH, 'Some text on a new line'); 
    UTL_FILE.FCLOSE(v_FH); 
END; 
Questions connexes