Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 3 sur 3
  1. #1
    Membre du Club
    Homme Profil pro Johan
    Inscrit en
    décembre 2006
    Messages
    159
    Détails du profil
    Informations personnelles :
    Nom : Homme Johan
    Âge : 30
    Localisation : France

    Informations forums :
    Inscription : décembre 2006
    Messages : 159
    Points : 40
    Points
    40

    Par défaut try - catch Mysql

    Bonjour j'aimerais savoir si quelqu'un sais comment je pourrais faire pour catcher une erreur lors de cette sp comme le ferait mssql avec le try - catch

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    DELIMITER $$
     
    CREATE PROCEDURE `gestionsp`.`insertFMA` (p_idPersonne INT, p_idFMA INT, p_dateFMA DATE, p_idFormateurFMA INT)
    BEGIN
     
    	SELECT @dejaFait := COUNT(*) FROM gestionsp.personnel_fma
    	WHERE idPersonne = p_idPersonne AND idFMA = p_idFMA;
     
    	IF(@dejaFait > 0)
    		THEN
    			SELECT 'c deja fait !';
    		ELSE 
    			INSERT INTO personnel_fma (idPersonne,idFMA,dateFMA,idFormateurFMA,dateCreation) 
    			VALUE (p_idPersonne, p_idFMA, p_dateFMA, p_idFormateurFMA, NOW());
    	END IF; 
     
     
    END
    J'ai bien vu un truc qui ressemble a signal ...

    merci par avance

  2. #2
    Expert Confirmé Avatar de ericd69
    Homme Profil pro Eric Dureuil
    Développeur informatique
    Inscrit en
    avril 2011
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Nom : Homme Eric Dureuil
    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 895
    Points : 3 207
    Points
    3 207

    Par défaut

    salut,

    tu n'as pas vraiment de try catch mais tu peux définir des "continue handler" ou "exit handler" pour intercepter des erreurs ou sqlstates spécifiques...

    par exemple:
    Code :
    declare continue handler FOR sqlstate value '01504' SELECT 'erreur';
    ou
    Code :
    1
    2
    3
    4
    5
    6
    declare continue handler FOR sqlstate value '01504'
    begin
      SELECT 'erreur';
      #liste d'instructions
      #...
    end;
    le select dans le handler n'est là que pour montrer une instruction à exécuter si le gestionnaire se déclenche...
    je te laisse compulser la doc pour la mise en place de ces handlers
    à savoir que c'est basé sur un principe de contexte: un handler intercepte tout ce qui vient du contexte où il est défini et donc aussi les sqlstates provenant d'appels dans celui-ci, s'ils sont concernés...
    soyons pensez à mettre quand votre problème est résolu ou à utiliser pour les réponses pertinentes...
    ne posez pas de problématique soi-disant simplifiée sur des problèmes que vous n'êtes pas capable de résoudre par respect pour ceux qui planchent dessus... sinon: et à utiliser pour insérer votre code...

  3. #3
    Membre du Club
    Homme Profil pro Johan
    Inscrit en
    décembre 2006
    Messages
    159
    Détails du profil
    Informations personnelles :
    Nom : Homme Johan
    Âge : 30
    Localisation : France

    Informations forums :
    Inscription : décembre 2006
    Messages : 159
    Points : 40
    Points
    40

    Par défaut

    Ok merci ericd69 pour l'orientation je me penche sur la doc ...

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

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •