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 :

plusieurs valeurs retour procedure stocké


Sujet :

SQL Procédural MySQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2008
    Messages : 198
    Points : 96
    Points
    96
    Par défaut plusieurs valeurs retour procedure stocké
    Bonjour, j'ai fais le tour des posts et j'ai cherché sur google mais je n'ai pas trouvé la solution à mon problème.
    Je cherche a faire un simple SELECT dans une procédure stocké et en parcourir les résultats.

    J'ai crée ma procedure comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    CREATE PROCEDURE Liste_Pays (OUT param1 VARCHAR(100))
    BEGIN
    SELECT DESCRIPTION INTO param1 FROM PAYS;
    END//
    delimiter ;
    Quand je l'exécute:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    CALL Liste_Pays(@Description_Pays);
    SELECT @Description_Pays;
    J'obtiens l'erreur suivante :
    #1172 - Result consisted of more than one row

    Si j'ai seulement 1 row ça fonctionne.


    Est-ce qu'il y a un moyen de retourner la valeur dans un "resultset" ou peut importe ?? J'essaye aussi de parcourir les résultat avec mysqli mais aucun résultat.

    merci
    mysql_query("DELETE stupidity FROM earth") or die("Stupidity");

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Ceci devrais fonctionner

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    CREATE PROCEDURE Liste_Pays ()
    BEGIN
    SELECT DESCRIPTION  FROM PAYS;
    END//
    delimiter ;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CALL Liste_Pays();

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2008
    Messages : 198
    Points : 96
    Points
    96
    Par défaut
    Je copy/paste dans mysql et j'ai cette erreur:

    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 3

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CREATE PROCEDURE Liste_Pays () BEGIN SELECT DESCRIPTION FROM PAYS; END// delimiter ;
    J'essaye par la suite de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    delimiter //
    CREATE PROCEDURE Liste_Pays () BEGIN SELECT DESCRIPTION FROM PAYS; END// delimiter ;
    rien ne ce produit et on dirait que ça fais une boucle sans fin...


    Si je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CREATE PROCEDURE Liste_Pays () BEGIN SELECT DESCRIPTION  FROM PAYS; END
    ça fonctionne mais si je la call, #1312 - PROCEDURE Liste_Pays can't return a result set in the given context
    mysql_query("DELETE stupidity FROM earth") or die("Stupidity");

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2008
    Messages : 198
    Points : 96
    Points
    96
    Par défaut
    Il suffit de faire


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CREATE PROCEDURE Liste_Pays () BEGIN SELECT DESCRIPTION  FROM PAYS; END
    pour évitez l'erreur, il faut parcourir les résultats avec php de cette facon:
    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
     
    /* execute multi query */
    	if (mysqli_multi_query($conn, $requete)) {
     
    	   do {
    	       /* store first result set */
    	       if ($result = mysqli_store_result($conn)) {
    	           while ($row = mysqli_fetch_row($result)) {
    	               //printf("%s\n", $row[0]);
    	               echo $row[0] . "<br>";
    	           }
    	           mysqli_free_result($result);
    	       }
    	       /* print divider */
    	       if (mysqli_more_results($conn)) {
    	           printf("-----------------\n");
    	       }
    	   } while (mysqli_next_result($conn));
    	}
     
    	mysqli_close($conn);
    mysql_query("DELETE stupidity FROM earth") or die("Stupidity");

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 20/01/2011, 18h31
  2. Réponses: 3
    Dernier message: 12/06/2009, 13h48
  3. Syntaxe valeur discrète procedure stockée oracle
    Par gg2vig dans le forum SAP Crystal Reports
    Réponses: 0
    Dernier message: 14/09/2007, 16h51
  4. Réponses: 1
    Dernier message: 25/11/2006, 15h21
  5. [VB] Passer plusieurs parametres à une procedure stockée
    Par wolflinger dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 19/04/2005, 14h13

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