Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 5 sur 5
  1. #1
    Membre éprouvé
    Avatar de JP.NUAGE
    Inscrit en
    avril 2006
    Messages
    602
    Détails du profil
    Informations personnelles :
    Âge : 72

    Informations forums :
    Inscription : avril 2006
    Messages : 602
    Points : 454
    Points
    454

    Par défaut Exception de trigger indigeste

    à tous

    J'ai hérité d'une application qui utilise les triggers à qui mieux mieux. Certains, et même beaucoup, renvoient des exceptions avec message, Exemple :

    Code :
    1
    2
    if erreur = 1 then
      Exception MESSAGE_ERREUR_DATE;
    Les triggers sont, soit des BeforeInsert, soit des BeforeUpdate.

    Jusque là, rien de très spécial. Mais à l'exécution ces messages sont plus rébarbatifs que ceux de Windows (et ce n'est pas peu dire! )

    Ma question est : existe-t-il un moyen d'intercepter l'exception du trigger avant qu'il ne l'envoie, pour lui substituer un texte plus clair.

    Précision, la base est sous Firebird 2.1...mais un passage à un Firebird plus récent est parfaitement envisageable.

    Merci d'avance pour toute suggestion
    Ce qui se conçoit bien s'énonce clairement
    Et les mots pour le dire viennent aisément (Boileau)

  2. #2
    Expert Confirmé

    Homme Profil pro Philippe Makowski
    Consultant spécialité Firebird
    Inscrit en
    mai 2002
    Messages
    2 313
    Détails du profil
    Informations personnelles :
    Nom : Homme Philippe Makowski
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 2 313
    Points : 3 561
    Points
    3 561
    Philippe Makowski
    IBPhoenix - Firebird
    Membre de l'April

  3. #3
    Membre éprouvé
    Avatar de JP.NUAGE
    Inscrit en
    avril 2006
    Messages
    602
    Détails du profil
    Informations personnelles :
    Âge : 72

    Informations forums :
    Inscription : avril 2006
    Messages : 602
    Points : 454
    Points
    454

    Par défaut

    Les informations données par le lien ne répondent, hélas pas à la question. J'ai déjà fait tout ce qui est dit. Déjà, le when any n'est accepté qu'après un update ou un insert et donc le trigger a déjà balancé son message.

    Mettre un message dans le trigger, c'est déjà fait, et voilà ce que cela donne

    Code :
    1
    2
    3
    Le projet MON_PROJET a provoqué une classe d'exception EZSQLException avec le message SQL3 Error: exception 16 DETAIL_LOC_VERIF_DATE_TIU_DETAIL_LOCATION:  
    Date/Heure retour invalide avec Date/Heure sortie At trigger 'TBIU_DET_LOC_VERIF_DATE' At procedure DIMINUE line: 60, col 3 Error Code -836, exception 
    'The SQL EXECUTE PROCEDURE DIMINUE(?). Processus stoppé. Utilisez Pas-à-pas ou Exécuter pour continuer
    et la seule partie qui est intéressante est celle en rouge. Or c'est précisément cette partie que je veux, pas le reste !
    Ce qui se conçoit bien s'énonce clairement
    Et les mots pour le dire viennent aisément (Boileau)

  4. #4
    Expert Confirmé

    Homme Profil pro Philippe Makowski
    Consultant spécialité Firebird
    Inscrit en
    mai 2002
    Messages
    2 313
    Détails du profil
    Informations personnelles :
    Nom : Homme Philippe Makowski
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Consultant spécialité Firebird
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 2 313
    Points : 3 561
    Points
    3 561

    Par défaut

    et bien tu parses dans ton application le message d'erreur, c'est tout
    Philippe Makowski
    IBPhoenix - Firebird
    Membre de l'April

  5. #5
    Membre éprouvé
    Avatar de JP.NUAGE
    Inscrit en
    avril 2006
    Messages
    602
    Détails du profil
    Informations personnelles :
    Âge : 72

    Informations forums :
    Inscription : avril 2006
    Messages : 602
    Points : 454
    Points
    454

    Par défaut

    Donc en fait on ne peut pas intercepter le trigger : Domage. cela signifie que les exceptions ne servent à rien, puisqu'il faut les refaire dans le programme ! Et c'est ce que j'ai fait
    Ce qui se conçoit bien s'énonce clairement
    Et les mots pour le dire viennent aisément (Boileau)

+ 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
  •