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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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

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