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 :

[Mysql5] Fonction retournant le résultat d'un Select


Sujet :

SQL Procédural MySQL

  1. #1
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut [Mysql5] Fonction retournant le résultat d'un Select
    Bonjour,

    J'aimerais savoir si c'était possible de faire une fonction stockée qui retournerait le résultat d'une requête SELECT. Et si oui comment ?

    En fait, le prof nous demande de changer toutes nos requêtes en procédures stockées, il veut qu'on emploie plus que ça, je trouve pas ça très terrible, mais bon...

    J'ai essayé de faire quelque chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    CREATE FUNCTION GETLANGUAGES()
    BEGIN 
       RETURN (SELECT name FROM t_languages)
    END
    Mais ca me sort une erreur de syntaxe, je pense qu'il faut mettre le type de retour, mais je sais pas quoi mettre.

    d'avance

  2. #2
    Invité
    Invité(e)
    Par défaut
    Il faut écrire une procédure. Elle retournera le resultat de ton select toute seule.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    DELIMITER $$
     
    DROP PROCEDURE IF EXISTS `mabase`.`essai` $$
    CREATE PROCEDURE `mabase`.`essai` ()
    BEGIN
      select * from matable;
    END $$
     
    DELIMITER ;

  3. #3
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Je viens d'essayer d'éxécuter ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    DELIMITER $$
     
    DROP PROCEDURE IF EXISTS `db_easyupload`.`getLanguages` $$
    CREATE PROCEDURE `db_easyupload`.`getLanguages` ()
    BEGIN
      SELECT name FROM t_languages;
    END $$
     
    DELIMITER ;
    Mais ça me met encore une erreur de syntaxe :

    #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 'DELIMITER $$

    DROP PROCEDURE IF EXISTS `db_easyupload`.`getLanguages` $$
    CREA' at line 1
    Et ensuite, comment je peux faire pour récupérer le résultat du SELECT ?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Avec:

    call db_easyupload()

    C'est étonannt ta syntaxe est bonne. Tu es en local avec mysqlquerybrowser?

  5. #5
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Je suis sous phpmyadmin.

    Ne vaudrait-il pas mieux faire une fonction ?

  6. #6
    Invité
    Invité(e)
    Par défaut
    La fonction ne retournera pas le résultat d'un select:
    Script line: 4 Not allowed to return a result set from a function
    voilà ce que balance mysqlquerybrowser.
    Si tu peux, installe mysqlquerybrowser. C'est plus fiable

  7. #7
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    On ne peut pas retourner le résultat d'une requête avec une fonction ?

  8. #8
    Invité
    Invité(e)
    Par défaut
    Avec une procédure oui, pas une fonction. La fonction renvoie une valeur unique (y doit y avoir un terme genre "scalaire" pour ça ).
    MySqlQueryBrowser est ton ami

  9. #9
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Je viens de tester avec mysqlquerybrowser et j'ai réussi à faire une procédure qui éxécute un SELECT, mais le problème, c'est que j'ai besoin de traiter ce résultat dans une application php, j'aimerais donc pouvoir récupérer le résultat de ma requête, alors que si je fais un CALL de ma procédure stockée depuis php, ca marche pas comme j'aurais voulu...

  10. #10
    Invité
    Invité(e)
    Par défaut
    C'est à dire, pas comme tu l'aurais voulu ? ça doit être le but de ton prof

  11. #11
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Non, le but de mon prof, c'est de remplacer tous les select qu'il y a dans le code php par des appels à des procédures (ou fonctions) stockées.

    Il veut donc qu'on crée quelque chose de stockée qui renvoie le résultat d'une requête SELECT.

  12. #12
    Invité
    Invité(e)
    Par défaut
    Qu'est-ce qui coince dans le retour de résultat après appel de la procédure stockée ?

Discussions similaires

  1. Réponses: 3
    Dernier message: 16/03/2010, 18h20
  2. Une Fonction SQL qui retourne le résultat d'une requête
    Par kamacho25 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 19/09/2007, 10h44
  3. procédure ou fonction stockée qui retourne un résultat
    Par PoichOU dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 28/05/2007, 16h03
  4. Réponses: 34
    Dernier message: 24/05/2007, 16h19
  5. Une fonction peut-elle retourner plusieurs résultats ?
    Par aragorns dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 26/03/2005, 22h18

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