Précédent   Forum des professionnels en informatique > Bases de données > Oracle > PL/SQL
PL/SQL Forum d'entraide sur le PL/SQL
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 15/05/2008, 14h40   #1
F2S
Membre du Club
 
Inscription : avril 2006
Messages : 139
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 139
Points : 62
Points : 62
Envoyer un message via MSN à F2S
Par défaut Procédure stockée a partir d'un shell

Bonjour à tous,

Voilà mon soucis, je lance une proc-stock vis un shell.
ma proc renvoie plusieurs codes erreurs différents selon son exécutuion.

ce que je cherche a faire, c'est : Récupèré le code erreur de la proc avec mon script shell...

est ce que l'un de vous a une idée ?

ps: je ne sais si j'ai posté sur le bon forum... désolé
F2S est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2008, 15h11   #2
Membre chevronné
 
Avatar de philcero
 
Inscription : septembre 2007
Messages : 519
Détails du profil
Informations personnelles :
Âge : 40
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : septembre 2007
Messages : 519
Points : 649
Points : 649
Moi je passerais par une table de suivie des appels externes à mes traitements. Un truc du style (PROCEDURE/DATE/OSUSER/START/END/RETURNCODE).

Ensuite reste plus que dans ton shell à récupérer le dernier RETURNCODE.

Avantage, tu peux avoir une historisation (Pas mal quand on est pas là de 15 jours) et surtout faire des statistiques sur l'évolution de tes temps de traitement au fil des mois permettant à la fois prévoyance et surveillance (Jamais inutile ça).

philcero est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2008, 15h29   #3
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 320
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 320
Points : 5 839
Points : 5 839
Citation:
Envoyé par philcero Voir le message
Moi je passerais par une table de suivie des appels externes à mes traitements. Un truc du style (PROCEDURE/DATE/OSUSER/START/END/RETURNCODE).

Ensuite reste plus que dans ton shell à récupérer le dernier RETURNCODE.

...
Et c'est quoi le derniere RETURNCODE ?
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2008, 15h50   #4
Membre chevronné
 
Avatar de philcero
 
Inscription : septembre 2007
Messages : 519
Détails du profil
Informations personnelles :
Âge : 40
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : septembre 2007
Messages : 519
Points : 649
Points : 649
Citation:
Et c'est quoi le derniere RETURNCODE ?
Vu que je parle d'historisation, tu auras de multiples lignes pour une même procédure/traitement.

Il suffira juste d'utiliser un SQL :
Code :
1
2
3
4
5
6
7
SELECT returncode FROM matable wa
WHERE date = 
(
    SELECT max(date) 
    FROM matable wb
    WHERE wb.procedure=wa.procedure
);
Là c'est un peu basique, mais c'est l'idée...
philcero est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2008, 16h17   #5
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 320
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 320
Points : 5 839
Points : 5 839
Citation:
Envoyé par philcero Voir le message
Vu que je parle d'historisation, tu auras de multiples lignes pour une même procédure/traitement.

Il suffira juste d'utiliser un SQL :
Code :
1
2
3
4
5
6
7
SELECT returncode FROM matable wa
WHERE date = 
(
    SELECT max(date) 
    FROM matable wb
    WHERE wb.procedure=wa.procedure
);
Là c'est un peu basique, mais c'est l'idée...
Et quoi garanti qu'il aura un seul enregistrement ramené ?
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2008, 16h19   #6
Membre chevronné
 
Avatar de philcero
 
Inscription : septembre 2007
Messages : 519
Détails du profil
Informations personnelles :
Âge : 40
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : septembre 2007
Messages : 519
Points : 649
Points : 649
Le couple procedure/max(date)...

Au pire, si tu n'es pas sûr, tu peux ajouter une colonne d'index avec une séquence et prendre le couple procedure/max(sequence)...
philcero est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2008, 16h21   #7
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 320
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 320
Points : 5 839
Points : 5 839
Et si deux utilisatuers se connect avec le même OSUSER et exécutent la procédure via le script en même temps ?
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2008, 16h30   #8
Membre chevronné
 
Avatar de philcero
 
Inscription : septembre 2007
Messages : 519
Détails du profil
Informations personnelles :
Âge : 40
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : septembre 2007
Messages : 519
Points : 649
Points : 649
Sois pas tétu non plus !

Tu adaptes les champs de ta table en fonction de ton besoin. C'est un exemple hypothétique que je t'ai donné. Ajoute autant de colonnes déterminantes que tu as de possibilités...
philcero est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2008, 16h38   #9
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 320
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2007
Messages : 3 320
Points : 5 839
Points : 5 839
Citation:
Envoyé par philcero Voir le message
Sois pas tétu non plus !

Tu adaptes les champs de ta table en fonction de ton besoin. C'est un exemple hypothétique que je t'ai donné. Ajoute autant de colonnes déterminantes que tu as de possibilités...
Bon d'accord.
mnitu 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 17h01.


 
 
 
 
Partenaires

Hébergement Web