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 :

Gestion des erreurs et valeurs de retour des procedures stockées


Sujet :

SQL Procédural MySQL

  1. #1
    Membre du Club Avatar de sarah65536
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2006
    Messages : 93
    Points : 59
    Points
    59
    Par défaut Gestion des erreurs et valeurs de retour des procedures stockées
    Bonjour !

    Je découvre peu à peu le fonctionnement des procédures stockées. je trouve cela assez interessant. Néanmoins, je reste archi-débutante dans le domaine, et j'aimerai savoir :

    - comment savoir si une des instructions ne s'est pas bien déroulée, et, dans ce cas,comment retourner une valeur (false par exemple).

    - ma procédure doit copier les données d'une table vers une autre, en ignorant les données déjà présentes. Comment retourner le nombre d'enregistrement copié ?

    en gros, je devrais retourner 2 valeurs. Cela ne me semble pas réalisable, à moins qu'il soit possible de retourner un tableau ou une classe ou autre.


    Donnez moi vos avis.
    Merci

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    178
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 178
    Points : 220
    Points
    220
    Par défaut
    La gestion d'erreurs dans les procédures stockées MySQL est encore très insuffisante (comparée à Oracle ou PostgreSQL par exemple), mais ça se fait en utilisant des "Handlers", ce qui est préconisé par la norme ANSI :

    http://dev.mysql.com/doc/refman/5.0/...-handlers.html

    Pour l'instant on ne peut pas générer soi-même une exception et on ne peut que déclarer un Handler pour un type d'erreur donné (contrainte unique par exemple), pas pour une contrainte en particulier (contrainte unique sur l'email d'un utilisateur par exemple)

    Les erreurs sont prévues pour être beaucoup mieux gérées en MySQL 5.4 (ça nous laisse le temps de galérer encore pas mal ).

    Pour retourner plusieurs données, à ma connaissance la seule possibilité est de renvoyer un curseur avec une seule ligne et comme colonne les valeurs à retourner. Pour cela ajoutez simplement à la fin de votre procédure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT nomVariable1 AS Retour,
        nomVariable2 AS NbLignesModifiees;
    Exemple pour renvoyer un message d'erreur dans un curseur (pas testé mais ça devrait marcher) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DECLARE EXIT HANDLER FOR SQLSTATE '23000' SELECT 'Violation de contrainte unique' AS MessageErreur, 0 AS NbLignesModifiees;

  3. #3
    Membre du Club Avatar de sarah65536
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2006
    Messages : 93
    Points : 59
    Points
    59
    Par défaut
    D'accord merci. je ne comprends pas encore tout, mais je vais regarder. Pour l'instant je dois avant tout réussir à créer ma procédure, c'est à dire a copier mes enregistrements que si ils n'existent pas. Ca semble surement simple, mais comme c'est ma première procédure, j'y passes beaucoup de temps ( déjà 3h :s)
    J'avoue m'embrouiller beaucoup avec les handler curseurs etc... et ne pas encore connaitre toutes leurs utilités. Merci pour la doc

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

Discussions similaires

  1. [WD15] Récupérer valeur de retour dans procédure stockée
    Par deepshark dans le forum WinDev
    Réponses: 1
    Dernier message: 15/02/2012, 11h23
  2. Retour de Procedure Stocké avec une Clé primaire
    Par edokt dans le forum Développement
    Réponses: 2
    Dernier message: 21/10/2010, 13h02
  3. [DAO] Gestion des DAO et valeur de retour
    Par superJiBi dans le forum Persistance des données
    Réponses: 12
    Dernier message: 05/07/2010, 11h10
  4. Réponses: 8
    Dernier message: 06/03/2009, 09h20
  5. StarUML, valeur de retour des opérations
    Par mister3957 dans le forum Outils
    Réponses: 1
    Dernier message: 28/06/2008, 11h23

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