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 Procédural MySQL Discussion :

[procedure] une erreur de syntaxe, mais où ?


Sujet :

SQL Procédural MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de elvan49
    Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2006
    Messages : 274
    Par défaut [procedure] une erreur de syntaxe, mais où ?
    Bonjour,

    Je démarre dans la création des procédures MySQL. Voici mon code et j'ai une erreur visiblement au niveau de l'affectation de c...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    DELIMITER //
    CREATE PROCEDURE Liste_Pays()
    BEGIN
        DECLARE i INT DEFAULT 1;
        DECLARE c INT DEFAULT 1; 
        INSERT INTO c VALUES(SELECT COUNT(nom_pays) FROM pays);
        WHILE i<=c DO
            SELECT nom_pays, id_pays FROM pays;
            SET i:=i+1;
        END WHILE;    
    END//
    DELIMITER ;
    Peut-onm'aider ? merci.

  2. #2
    Membre chevronné Avatar de jota5450
    Inscrit en
    Janvier 2006
    Messages
    263
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Janvier 2006
    Messages : 263
    Par défaut
    slt...


    set i = ... il y a pas les :
    INSERT INTO c VALUES(SELECT COUNT(nom_pays) FROM pays);
    Ton c est int... du devrais pas inserer dans une table?

    et puis la bonne syntaxe est:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    insert into TA_TABLE(TON_CHAMP) select count(nom_pays) from pays

  3. #3
    Membre éclairé Avatar de elvan49
    Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2006
    Messages : 274
    Par défaut SEt au lieu d'INSERT
    Bonjour, merci de ces précisions

    Est-ce qu'il ne vaudrait mieux pas quelque chose du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     DELIMITER //
    CREATE PROCEDURE Liste_Pays()
    BEGIN
        DECLARE i INT DEFAULT 1;
        DECLARE c INT DEFAULT 1; 
        SET c = SELECT COUNT(nom_pays) FROM pays);
        WHILE i<=c DO
            SELECT nom_pays, id_pays FROM pays;
            SET i=i+1;
        END WHILE;    
    END//
    DELIMITER ;
    L'idée est de donner le résultat de count comme valeur à c...
    Je vais tester.

  4. #4
    Membre Expert
    Avatar de Sivrît
    Profil pro
    Inscrit en
    Février 2006
    Messages
    953
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Février 2006
    Messages : 953
    Par défaut
    Citation Envoyé par elvan49 Voir le message
    Bonjour, merci de ces précisions

    Est-ce qu'il ne vaudrait mieux pas quelque chose du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     DELIMITER //
    CREATE PROCEDURE Liste_Pays()
    BEGIN
        DECLARE i INT DEFAULT 1;
        DECLARE c INT DEFAULT 1; 
        SET c = SELECT COUNT(nom_pays) FROM pays);
        WHILE i<=c DO
            SELECT nom_pays, id_pays FROM pays;
            SET i=i+1;
        END WHILE;    
    END//
    DELIMITER ;
    L'idée est de donner le résultat de count comme valeur à c...
    Je vais tester.
    Je crois que la syntaxe que tu recherches est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        DECLARE c INT; 
        SELECT COUNT(nom_pays) INTO c FROM pays;
    (http://dev.mysql.com/doc/refman/5.0/...statement.html)

  5. #5
    Membre éclairé Avatar de elvan49
    Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2006
    Messages : 274
    Par défaut Merci beaucoup
    Merci, c'est ça !
    Le lien vers mysqlAB good bien vu. J'y suis souvent mais quand on ne sait pas quoi chercher, c'est pas simple... Là direct !

  6. #6
    Membre éclairé Avatar de elvan49
    Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2006
    Messages : 274
    Par défaut J'ai dit "c'est ça" mais...
    Bonjour,

    Je me suis un peu trop emporté.
    La procédure a bien une syntaxe correcte mais son appel ne renvoie pas le résultat escompté, au contraire j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     #1312 - PROCEDURE base_type.Liste_Pays can't return a result set in the given context
    Je voulais la liste des pays...

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

Discussions similaires

  1. Une erreur de syntaxe sous SqlServer? mais qui marche quand meme
    Par dzenakhra dans le forum Développement
    Réponses: 4
    Dernier message: 18/11/2008, 18h04
  2. [Conception] Je n'arrive pas créé une table,erreur de syntax mais laquel
    Par pierrot10 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 26/09/2006, 08h11
  3. erreur de syntaxe, mais je ne vois pas
    Par Argorate dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 18/08/2006, 12h12
  4. [VB.Net] Pourquoi ai-je une erreur de syntaxe INSERT UPDATE ?
    Par zzzmoi dans le forum Accès aux données
    Réponses: 14
    Dernier message: 17/08/2006, 14h21
  5. Y aurait-il une erreur de syntaxe ?
    Par mpat dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 21/12/2005, 15h07

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