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 Firebird Discussion :

erreur sur lancement de la procedure stockée


Sujet :

SQL Firebird

  1. #1
    Membre régulier
    Inscrit en
    Mars 2003
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 217
    Points : 73
    Points
    73
    Par défaut erreur sur lancement de la procedure stockée
    Bonjour,
    J'ai créé une procédure stockée comme suit
    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
    PROCEDURE XDATA_BY_SELECTED_VARIABLE (
        NAME Varchar(75),
        FILENAME Varchar(10) )
    RETURNS (
        XDATA Float )
    AS
    BEGIN
      for SELECT  data
    FROM data D INNER JOIN VARIABLES V on (V.IDVARIABLE=D.IDVARIABLE)
    INNER JOIN FILE F On V.IDFILE=F.IDFILE where v.NAME=:NAME AND F.NAME=:FILENAME
    INTO xdata
    do 
    suspend;
    END^
    SET TERM ; ^
    Quand j'exécute la procédure j'obitens un message d'erreur
    SQL Message:-802
    Arithmetic overflow or division by zero has occured
    Engine code:335544321
    Engine Message:
    arithmetic exception, numeric overflow, or string truncation string right truncation
    Pourtant si j'exécute ma requête j'obtiens mes résultats. Le problème est peut être dû au deux inner join dans la requête car avec un exemple où j'enlève un des inner join la procédure fonctionne correctement.
    Comment peut on ecrire cette procédure correctement?
    Merci pour votre aide

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ingenieur de recherche - Ecologue
    Inscrit en
    Juin 2003
    Messages
    1 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingenieur de recherche - Ecologue

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 146
    Points : 1 412
    Points
    1 412
    Par défaut
    Bonjour


    C'est quand très dangereux des mots-clés comme nom de tables ou de colonnes.

    en essayant ceci :

    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
    PROCEDURE XDATA_BY_SELECTED_VARIABLE (
        NAME Varchar(75),
        FILENAME Varchar(10) )
    RETURNS (
        XDATA Float )
    AS
    BEGIN
      FOR SELECT  D.xxx
    FROM DATA D 
         INNER JOIN VARIABLES V ON (V.IDVARIABLE=D.IDVARIABLE)
         INNER JOIN FILE F ON V.IDFILE=F.IDFILE 
    WHERE v.NAME=:NAME AND F.NAME=:FILENAME
    INTO :xdata
    do 
    suspend;
    END^
    SET TERM ; ^
    Merci d'ajouter un sur les tags qui vous ont aidé

  3. #3
    Membre régulier
    Inscrit en
    Mars 2003
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 217
    Points : 73
    Points
    73
    Par défaut
    j'ai apporté une modification dans mon code en rajoutant D.DATA pour le nom de champ dans select mais l'erreur persiste.

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    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 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    Les Tailles de NAME et FILENAMEsont elles correctes ?
    xData est il bien déclaré ?

    Quid si DATA=Null , un petit COALESCE(data,0.00) ou un CAST (DATA AS FLOAT) règle t'il le problème ?
    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 régulier
    Inscrit en
    Mars 2003
    Messages
    217
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 217
    Points : 73
    Points
    73
    Par défaut
    j'ai trouvé d'où venait le problème. j'ai declare ma variable filename en varchar(10) or que dans la table file name est en varchar(50). Je ne m'explique pourquoi ca affiche une erreur car en mettant varchar(45) à filename la procedure fonctionne.

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 043
    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 043
    Points : 40 957
    Points
    40 957
    Billets dans le blog
    62
    Par défaut
    string truncation ,string right truncation
    c'est ce qui m'a mis sur la piste lorsque j'ai posé la question , on a trop souvent tendance a ne regarder que la première partie du message
    Arithmetic overflow or division by zero has occured
    et s'entêter sur une valeur numérique
    Je ne m'explique pas pourquoi ca affiche une erreur car en mettant varchar(45) à filename la procedure fonctionne.
    cela dépend des données tu as 'la chance' de ne pas avoir de CHAR_LENGTH(NAME) > 45 .

    Pour comprendre, rempli un 'NAME' avec 50 Char et ta procédure (pour peu que tu ais laissé ton FileName a 45)
    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

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

Discussions similaires

  1. Erreur et incomprehension d'une procedure stockée
    Par sab_info dans le forum Développement
    Réponses: 18
    Dernier message: 22/02/2013, 13h42
  2. Réponses: 8
    Dernier message: 08/09/2009, 14h46
  3. Erreur sur execution d'une procédure stockée
    Par Loubna.B dans le forum C#
    Réponses: 6
    Dernier message: 16/07/2009, 14h24
  4. tests sur requetes dans une procedure stockée
    Par morback dans le forum SQL
    Réponses: 18
    Dernier message: 30/08/2007, 16h36
  5. [JSP] erreur sur lancement d'exe
    Par RENAULT dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 13/07/2004, 17h01

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