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

 Firebird Discussion :

Firebird 1.5 et les exceptions


Sujet :

Firebird

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 218
    Points : 91
    Points
    91
    Par défaut Firebird 1.5 et les exceptions
    Bonjour je débute,
    j'essaie d'écrire une procédure stockée si nom article n'est pas trouve
    alors je retourne une exception

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    CREATE EXCEPTION EXEPT_ART_VIDE 'article non existant';
     
    DESCRIBE EXCEPTION EXEPT_ART_VIDE
    'article vide';
    par la suite dans la procédure stockée

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    SET TERM ^ ;
     
    CREATE OR ALTER PROCEDURE TESTSELECT (
        id_art integer)
    returns (
        nomarticle varchar(10))
    as
    declare variable nom_art varchar(10);
    BEGIN
      /* PROCEDURE TEXT
      PROCEDURE TEST QUI RETOUNR UN  NOM ARTICLE EN FONCTION DE SON NUMERO
      exemple select nom article where id=1
     
      parametre entree :ID_ART
      parametre sortie NOMARTICLE
     
     
      */
     
        NOMARTICLE=''   ;
     
        SELECT NOM FROM ARTICLES
        WHERE ID=:ID_ART    /*:ID_ART PARAMETRE EN ENTRÉE*/
        --INTO NOMARTICLE; /* RETOUR DU RESUlTAT*/
           into nom_art;
     
       -- if ( NOMARTICLES==' ') then
         --   exeption TEST-EXEPT;
       begin
         if(nom_art<>'') then
     
            nomarticle=nom_art;
     
         else
     
            exeption EXEPT_ART_VIDE;
     
     
            --SUSPEND;
     
          end ;
     
    END^
     
    SET TERM ; ^
     
    GRANT SELECT ON ARTICLES TO PROCEDURE TESTSELECT;
     
    GRANT EXECUTE ON PROCEDURE TESTSELECT TO SYSDBA;

    J'ai comme message d'erreur

    Invalid token.
    Dynamic SQL Error.
    SQL error code = -104.
    Token unknown - line 34, char 18.
    EXEPT_ART_VIDE.

    -Qui peut me dire d'où viens cette erreur pourtant l'exception est compilée ?
    -Comment afficher le contenu d'un variable dans Ibepert ?
    -Ou trouver un bon manuel sur le langage DDL ?

    Outils Ibexpert Free FireBird 1.5 windows Xp SP3


    en vous remerciant par avance
    Outils utilisés : FireBird 2.1 - IbExert Free - C++ Builder 6 Pro Update 4- Windows Xp pro Sp3

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 042
    Points : 40 952
    Points
    40 952
    Billets dans le blog
    62
    Par défaut
    Bonjour

    Qui peut me dire d'où viens cette erreur pourtant l'exception est compilée
    il me semble qu'il y a une bête erreur d'orthographe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
            exception EXEPT_ART_VIDE;
    Ou trouver un bon manuel sur le langage DDL ?
    je pense que tu voulais dire PSQL plutôt que Data Definition Language, pour cela je vais souvent ici
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 218
    Points : 91
    Points
    91
    Par défaut
    bonjour et merci

    j'ai modifie la procedure

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    CREATE OR ALTER PROCEDURE TESTSELECT (
        id_art integer)
    returns (
        nomarticle varchar(10))
    as
    declare variable nom_art varchar(10);
    BEGIN
      /* PROCEDURE TEXT
      PROCEDURE TEST QUI RETOUNR UN  NOM ARTICLE EN FONCTION DE SON NUMERO
      EXEMPLE SELECT NOM ARTICLE WHERE ID=1
     
      PARAMETRE ENTREE :ID_ART
      PARAMETRE SORTIE NOMARTICLE
     
     
      */
     
        NOMARTICLE=''   ;
     
        SELECT NOM FROM ARTICLES
        WHERE ID=:ID_ART    /*:ID_ART PARAMETRE EN ENTRÉE*/
        INTO NOM_ART;
     
        SUSPEND;
     
     
        IF (NOM_ART<>'') THEN
     
     
            NOMARTICLE=NOM_ART    ;  /* RETOUR DU RESULTAT*/
     
        ELSE
     
            EXCEPTION EXEPT_ART_VIDE;   /* ON LANCE    L'EXECPTION   */
     
     
     
    END^

    L'exection s'execute mais dans l'autre cas j'arive pas a lire l'enregistrement
    je ne comprend pas


    Existe t'il un moyen d'afficher la valeur de contenu de variable
    comme en php avec un echo ?

    comment vous debbuger vos procedure ?

    cela me serait utile

    merci


    Outils Ibexpert Free FireBird 1.5 windows Xp SP3
    Outils utilisés : FireBird 2.1 - IbExert Free - C++ Builder 6 Pro Update 4- Windows Xp pro Sp3

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 042
    Points : 40 952
    Points
    40 952
    Billets dans le blog
    62
    Par défaut
    Normal , le suspend doit être placé après le test .

    de même je aurais plutôt écrit ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    CREATE OR ALTER PROCEDURE TESTSELECT (
        id_art integer)
    returns (
        nomarticle varchar(10))
    AS
     
        SELECT NOM FROM ARTICLES
        WHERE ID=:ID_ART    /*:ID_ART PARAMETRE EN ENTRÉE*/
        INTO :NOMARTICLE;
        IF (:NOMARTICLE IS NULL) THEN  EXCEPTION EXEPT_ART_VIDE;  
        SUSPEND;
    END^
    pour le deboguage , aucun moyen simple, de plus je n'utilise pas IBExpert mais Flamerobin . Pour une procédure aussi simple je fais un simple SELECT * from TESTSELECT('XX') .
    Nota ce que je n'ai pas fait ici, le code indiqué reste à vérifier
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  5. #5
    Membre expert

    Homme Profil pro
    Consultant spécialité Firebird
    Inscrit en
    Mai 2002
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 342
    Points : 3 712
    Points
    3 712
    Par défaut
    en l'occurence c'est plutot :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    CREATE OR ALTER PROCEDURE TESTSELECT (
      ID_ART Integer)
     returns (
      NOMARTICLE VarChar(10))
    AS
    BEGIN 
        SELECT NOM FROM ARTICLES
        WHERE ID=:ID_ART    /*:ID_ART PARAMETRE EN ENTRÉE*/
        INTO NOMARTICLE;
        IF (NOMARTICLE IS NULL) THEN  EXCEPTION EXEPT_ART_VIDE;  
        SUSPEND;
    END
     ^
    Philippe Makowski
    IBPhoenix - Firebird
    Membre de l'April

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 218
    Points : 91
    Points
    91
    Par défaut
    Je vous remercie

    J'aurais d'autres question a vous poser .....

    merci
    Outils utilisés : FireBird 2.1 - IbExert Free - C++ Builder 6 Pro Update 4- Windows Xp pro Sp3

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

Discussions similaires

  1. [Exception]Comment gérer les exceptions ?
    Par Gildas Huart dans le forum Général Java
    Réponses: 7
    Dernier message: 29/03/2005, 18h01
  2. imprimer les exception
    Par deeal dans le forum Général Python
    Réponses: 2
    Dernier message: 05/01/2005, 16h16
  3. Utiliser les exceptions pour un traitement particulier ?
    Par Blustuff dans le forum Assembleur
    Réponses: 11
    Dernier message: 01/12/2004, 02h21
  4. [Exceptions] Pb avec les exceptions
    Par joquetino dans le forum Langage
    Réponses: 11
    Dernier message: 22/09/2004, 17h08
  5. Intercepter les 'Exceptions'
    Par Teo dans le forum ASP
    Réponses: 3
    Dernier message: 05/01/2004, 19h55

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