Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/05/2008, 11h30   #1
Invité de passage
 
Inscription : juillet 2006
Messages : 21
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 21
Points : 1
Points : 1
Par défaut Rajouter un fichier de log à mon script

Bonjour à tous,

J'ai actuellement un script SQL qui me génère dans un autre fichier les ordre sql que j'ai besoin d'exécuter par la suite.
J'aurai voulu ensuite garder un fichier de log pour tracer les insert et delete dans ma base (et ne pas l'écraser à chaque exécution du script).
je lance mon script depuis sqlplus.

Code :
1
2
3
4
5
6
7
 
SET head off
SET echo off
spool c:\modif_pg15_test.sql
SELECT 'delete from pg15_test where rdprog = ''' || RDPROG || ''' and cdprog = ''' || cdprog || ''';' FROM pg15 WHERE rdprog IN ('FS000','AS0FT','WS000','ZS000','V3301','U2C01','ASVGD','ASUGD');
SELECT 'insert into pg15_test values (''' || RDPROG ||''',''' ||CDPROG||''', ''PPCLIEXP'',''' ||TICOMP||''',''' ||CDLANG||''',''' ||TYETAT || ''');' FROM pg15 WHERE rdprog IN ('FS000','AS0FT','WS000','ZS000','V3301','U2C01','ASVGD','ASUGD');
spool off;
Auriez vous des idées?
ntouhami est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2008, 14h18   #2
Expert Confirmé
 
Homme
Chef de projet en SSII
Inscription : janvier 2004
Messages : 2 866
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Chef de projet en SSII
Secteur : Conseil

Informations forums :
Inscription : janvier 2004
Messages : 2 866
Points : 3 448
Points : 3 448
Par exemple :
Code :
1
2
3
4
5
6
7
8
SET head off
SET echo off
spool c:\modif_pg15_test.sql
SELECT 'spool fichierlog.log' FROM dual;
SELECT 'delete from pg15_test where rdprog = ''' || RDPROG || ''' and cdprog = ''' || cdprog || ''';' FROM pg15 WHERE rdprog IN ('FS000','AS0FT','WS000','ZS000','V3301','U2C01','ASVGD','ASUGD');
SELECT 'insert into pg15_test values (''' || RDPROG ||''',''' ||CDPROG||''', ''PPCLIEXP'',''' ||TICOMP||''',''' ||CDLANG||''',''' ||TYETAT || ''');' FROM pg15 WHERE rdprog IN ('FS000','AS0FT','WS000','ZS000','V3301','U2C01','ASVGD','ASUGD');
SELECT 'spool off' FROM dual;
spool off;
__________________
Un problème sans solution est un problème mal posé

Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.
plaineR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2008, 15h44   #3
Invité de passage
 
Inscription : juillet 2006
Messages : 21
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 21
Points : 1
Points : 1
Merci la solution me convient parfaitement!
Reste plus qu'à mettre en forme mon fichier de log.
Tu ne saurais pas comment on fait afficher des messages dans le fichier ?
ntouhami est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2008, 15h50   #4
Expert Confirmé
 
Homme
Chef de projet en SSII
Inscription : janvier 2004
Messages : 2 866
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Chef de projet en SSII
Secteur : Conseil

Informations forums :
Inscription : janvier 2004
Messages : 2 866
Points : 3 448
Points : 3 448
Avec des prompt ou des select
__________________
Un problème sans solution est un problème mal posé

Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.
plaineR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2008, 16h30   #5
Invité de passage
 
Inscription : juillet 2006
Messages : 21
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 21
Points : 1
Points : 1
Tu pourrais me donner un exemple si ça te dérange pas?
ntouhami est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/05/2008, 16h36   #6
Expert Confirmé
 
Homme
Chef de projet en SSII
Inscription : janvier 2004
Messages : 2 866
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Loire Atlantique (Pays de la Loire)

Informations professionnelles :
Activité : Chef de projet en SSII
Secteur : Conseil

Informations forums :
Inscription : janvier 2004
Messages : 2 866
Points : 3 448
Points : 3 448
Code :
1
2
3
4
5
6
7
8
9
10
SET head off
SET echo off
spool c:\modif_pg15_test.sql
SELECT 'spool fichierlog.log' FROM dual;
SELECT 'prompt Debut fichier log' FROM dual;
SELECT 'delete from pg15_test where rdprog = ''' || RDPROG || ''' and cdprog = ''' || cdprog || ''';' FROM pg15 WHERE rdprog IN ('FS000','AS0FT','WS000','ZS000','V3301','U2C01','ASVGD','ASUGD');
SELECT 'insert into pg15_test values (''' || RDPROG ||''',''' ||CDPROG||''', ''PPCLIEXP'',''' ||TICOMP||''',''' ||CDLANG||''',''' ||TYETAT || ''');' FROM pg15 WHERE rdprog IN ('FS000','AS0FT','WS000','ZS000','V3301','U2C01','ASVGD','ASUGD');
SELECT 'prompt Fin fichier log' FROM dual;
SELECT 'spool off' FROM dual;
spool off;
__________________
Un problème sans solution est un problème mal posé

Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.
plaineR est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2008, 11h36   #7
Invité de passage
 
Inscription : juillet 2006
Messages : 21
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 21
Points : 1
Points : 1
Merci pour ta réponse !

J'ai quelque peu amélioré mon script pour avoir des affichages.

J'ai quelques erreurs qui apparaissent qui me bloquent quelque peu.
Voici mon code :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 
SET head off
SET echo off
SET heading off
spool modif_pg15_test.sql
SELECT 'SET echo off' FROM dual;
SELECT 'spool test.log' FROM dual;
SELECT 'select sysdate from dual;' FROM dual;
SELECT 'SET SERVEROUTPUT ON ' FROM dual;
SELECT 'DECLARE ' FROM dual;
SELECT 'LN$Cpt PLS_INTEGER ; ' FROM dual;
SELECT 'BEGIN ' FROM dual;
SELECT 'select count(*) INTO LN$Cpt FROM pg15_test;' FROM dual;
SELECT 'DBMS_OUTPUT.PUT_LINE( To_char( LN$Cpt ) || ' FROM dual;
SELECT ''' enregistrements '''FROM dual;
SELECT ') ; ' FROM dual;
SELECT 'delete from pg15_test where rdprog = ''' || RDPROG || ''' and cdprog = ''' || cdprog || ''';' FROM pg15 WHERE rdprog IN ('FS000','AS0FT','WS000','ZS000','V3301','U2C01','ASVGD','ASUGD');
SELECT 'DBMS_OUTPUT.PUT_LINE( To_char( SQL%ROWCOUNT ) || ' FROM dual;
SELECT ''' enregistrements supprimés'''FROM dual;
SELECT ') ; ' FROM dual;
SELECT 'insert into pg15_test values (''' || RDPROG ||''',''' ||CDPROG||''', ''PPCLIEXP'',''' ||TICOMP||''',''' ||CDLANG||''',''' ||TYETAT || ''');' FROM pg15 WHERE rdprog IN ('FS000','AS0FT','WS000','ZS000','V3301','U2C01','ASVGD','ASUGD');
SELECT 'DBMS_OUTPUT.PUT_LINE( To_char( SQL%ROWCOUNT ) || ' FROM dual;
SELECT ''' enregistrements insérés'''FROM dual;
SELECT ') ; ' FROM dual;
SELECT 'ROLLBACK ; ' FROM dual;
SELECT 'END ; ' FROM dual;
SELECT '/ ' FROM dual;
SELECT 'spool off' FROM dual;
spool off;
Et voici ce que j'obtiens dans mon fichier de log après l'exécution du script :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 
SQL> @modif_pg15_test.sql
 
30/05/08
 
118 ligne(s) sélectionnée(s).
*
ERREUR à la ligne 150 :
ORA-06550: Ligne 150, colonne 1 :
PLS-00103: Symbole "118" rencontré à la place d'un des symboles suivants :
begin declare end exception exit for goto if loop mod null
pragma raise return select update while <an identifier>
<a double-quoted delimited-identifier> <a bind variable> <<
close current delete fetch lock insert open rollback
savepoint set sql execute commit forall
<a single-quoted SQL string>
Symbole "begin inséré avant "118" pour continuer.
ORA-06550: Ligne 150, colonne 14 :
PLS-00103: Symbole "SÉLECTIONNÉE" rencontré à la place d'un des symboles
suivants :
:= . ( % ;
Symbole ":=" a été substitué à "SÉLECTIONNÉE" pour continuer.
ORA-06550: Ligne 290, colonne 1 :
PLS-00103: Symbole "118" rencontré à la place d'un des symboles suivants :
begin declare end exception exit for goto if loop mod null
pragma raise return select update while <an identifier>
<a double-quoted delimited-identifier
ORA-06550: Ligne 290, colonne 14 :
PLS-00103: Symbole "SÉLECTIONNÉE" rencontré à
ntouhami est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h32.


 
 
 
 
Partenaires

Hébergement Web