IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Procédural MySQL Discussion :

[Mysql 5.0] Error handling


Sujet :

SQL Procédural MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Par défaut [Mysql 5.0] Error handling
    Bonjour,


    J'aimerai savoir s'il est possible de faire quelque chose dans le genre avec les procedures Mysql en 5.0 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Debut traitement procedure
    Traitement métier 1
    Traitement métier 2
    .....
     
     
    Pour toute erreur (SQL ou autre) :
       Insertion dans une table de log l'erreur
    Fin Condition
    Bref émuler un bloc try catch ?

    Edit : pour le bloc try catch je penses avoir trouver une pseudo solution avec CREATE HANDLER EXIT/CONTINU FOR ....


    Par contre y a-t-il un moyen quelconque de chopper l'erreur SQL (CODE/MESSAGE) associé à un SQLEXCEPTION par exemple ? Et ceci au sein de la procédure ?


    Si ca n'est pas possible, si j'imbrique une procédure principale avec n procédure métier est-ce que je pourrai avoir ce niveau de log à disposition ?

  2. #2
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    salut,

    oui c'est possible en procédural...

    en effet avec les handlers après c'est pas aussi fin qu'un try catch
    il faut que tu définisse autan de handler que tu veux intercepter d'erreur en particulier si tu veux des comportements particuliers... tu peux utiliser:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    declare ... condition for...
    pour leur donner des nom explicite plutot que d'utiliser des sqlstate pas très parlant

    le principe est que ce qui n'est pas intercepté remonte du bloc de code le plus interne vers le plus externe

    si tu fais un handler dans un bloc il n'agit que pour lui et ceux qu'il contient (ou appelle)

    tu peux définir un bloc de code exécuté par le handler mais la récupération des infos j'avoue que tu peux pas vraiment le faire de manière simple...

    le contexte d'erreur est défini automatiquement par le sgbd et n'est pas modifiable sauf en déclenchant une erreur manuellement avec signal/resignal

    tu peux compenser en partie en créant des variables pour identifier l'endroit où se produit l'erreur et/ou certaine valeur clé de ton application ou utiliser un concat explicite de valeur clé par exemple...

    bref autan l'interception est simple et marche bien autan c'est un peu plus pénible si tu veux mettre dans un log maison certaines choses... tu peux pas vraiment faire un truc super générique comme try catch...

  3. #3
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Par défaut
    ok,

    Ce que j'aimerai faire c'est :

    - créer un handler générale sur le SQLEXCEPTION
    - chopper d'une manière ou d'une autre ce qu'il y a dans le show errors et l'insérer dans une table de log.


    Donc la partie intercept / insert je sais faire.

    Par contre la partie "chopper ce qu'il y a dans le show erros" je ne sais pas faire.

  4. #4
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    le problème est que tu peux pas...

    show n'est pas autorisé en règle général dans les curseurs et aucun select ne permet de simuler show errors...

  5. #5
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Par défaut
    ok merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 23
    Dernier message: 11/04/2012, 17h00
  2. Error handling: Object required
    Par astur2000 dans le forum VBScript
    Réponses: 4
    Dernier message: 01/07/2008, 13h57
  3. Cherche log : mysql max connect error
    Par Hitomi_Kay dans le forum Débuter
    Réponses: 0
    Dernier message: 10/03/2008, 09h02
  4. [mysql++] SSL connection error
    Par Barnabo dans le forum Bibliothèques
    Réponses: 1
    Dernier message: 06/03/2007, 16h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo