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 :

probleme dans execute statement


Sujet :

Firebird

  1. #1
    Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2007
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 144
    Points : 50
    Points
    50
    Par défaut probleme dans execute statement
    Bonjour,

    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
    SET TERM ^ ;
    CREATE OR ALTER PROCEDURE PS1 (
        id INTEGER,
        XNUM SMALLINT,
        XCODE1 CHAR(10),
        XCODE2 CHAR(16),
        XMNT NUMERIC(13,4),
        XCDE CHAR(30)
    )
    AS
    DECLARE S VARCHAR(255);
    BEGIN
          S = 'insert into table1 (id,num,code1,code2,mnt, cde) values ('
          ||:xid ||','||:xnum||','||:xcode1||','||:xcode2||','||:xmnt||','||:xcde||')';
          EXECUTE STATEMENT (:S);
    END^
    SET TERM ; ^
    Si j’exécute la commande suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQL> execute procedure ps1(15,1,'34210001','1-00005',3,'23');
    Etant donné que '1-00005' est le code d’un article, mais, firebird me met la valeur -4 qui est le résultat de :
    (1 – 00005) !!!!!!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SQL> select id,num,code1,code2,mnt, cde from table1;
     
    ID    	NUM	   CODE1       CODE2      MNT		     CDE 
    ==== ====    =======   ======    =========   ======= 
    15      1 	   34210001     -4            3  		       23
    J’ai utilisé cast(xcode2 as char(16)) comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    S = 'insert into table1 (id,num,code1,code2,mnt, cde) values ('
          ||:xid ||','||:xnum||','||:xcode1||','||'cast('||:xcode2||'as char(12))'|| ',' || :xmnt||','||:xcde)';
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SQL> execute procedure ps1(15,1,'34210001','1-00005',3,'BBBB');
    Statement failed, SQLSTATE = 42S22
    Dynamic SQL Error
    -SQL error code = -206
    -Column unknown
    -BBBB
    -At line 1, column 169
    SQL>
    Il n’accèpte pas BBBB sur la colonne cde.

    Est ce que quelqu'un peut m'aider à trouver la solution.

    Merci

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 030
    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 030
    Points : 40 928
    Points
    40 928
    Billets dans le blog
    62
    Par défaut
    il manque tout simplement des des doubles-quotes pour les variables CHAR ou VARCHAR et après tout s'enchaine

    n'avez vous pas eu la curiosité de vérifier la valeur de S produite par votre procédure ?
    insert into table1 (id,num,code1,code2,mnt, cde) values (15,1,34210001,1-0005,3,23)
    alors qu'il aurait fallu que cela soit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    insert into table1 (id,num,code1,code2,mnt, cde) values (15,1,'34210001','1-0005',3,23);
    je vous laisse contrôler ce que peut donner votre seconde tentative !

    de plus , j'espère que ceci est un exemple , car sinon il ne sert a rien de faire un EXECUTE STATEMENT
    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 du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2007
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 144
    Points : 50
    Points
    50
    Par défaut
    Tout d'abord merci à vous SergioMaster,

    Et Rebonjour,

    Oui c'est just un exemple.

    Je vais essayer de metre les cotes sur les char et varchar.

  4. #4
    Membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2007
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 144
    Points : 50
    Points
    50
    Par défaut
    Merci SergioMaster, ça marche très bien.



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

Discussions similaires

  1. Problème dans execution de processus
    Par Edta dans le forum Entrée/Sortie
    Réponses: 8
    Dernier message: 11/11/2006, 21h44
  2. [FEDORA] Problème dans l'exécution avec freeglut
    Par lia dans le forum RedHat / CentOS / Fedora
    Réponses: 5
    Dernier message: 11/08/2006, 18h12
  3. problem dans l'execution de"regedit"
    Par Tiesto dans le forum Sécurité
    Réponses: 5
    Dernier message: 28/12/2005, 21h18
  4. [Applet] probleme d'execution dans le navigateur
    Par adilou1981 dans le forum Applets
    Réponses: 5
    Dernier message: 02/07/2005, 15h02
  5. [Process] Probleme d'execution d'un prog c dans un prog java
    Par Elmilouse dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 08/06/2004, 14h26

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