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

Requêtes PostgreSQL Discussion :

Retourner liste procédure


Sujet :

Requêtes PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 5
    Par défaut Retourner liste procédure
    Bonjour à tous,

    ça fait environ deux heures que je bloque sur une procédure, et j'ai toujours pas trouvé.
    Donc toute aide sera la bienvenue (j'offre le champagne à celui qui m'aide ).

    En fait, imaginons qu'on ait une table COMPTE avec deux champs : login, password.

    J'aimerais faire une procédure qui renvoie la liste de tout les comptes, donc qui renvoie un array [login, password].

    J'ai essayé de faire comme cela mais sa ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    CREATE FUNCTION list_compte() 
    	RETURNS setof TEXT[]
    $$
    BEGIN
    	FOR pseudo, pass IN SELECT login, password FROM compte
    	LOOP
    		RETURN NEXT pseudo; // array[cpt][0] = pseudo
    		RETURN NEXT pass;    // array[cpt][1] = pass
    	END
    	RETURNS;
    END;
    $$ LANGUAGE plpgsql;
    Merci beaucoup !

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Par défaut
    Essaye
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     RETURN NEXT array[pseudo,pass];

  3. #3
    Membre éprouvé Avatar de kain_tn
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 873
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 873
    Par défaut
    Citation Envoyé par Pepsi333 Voir le message
    j'offre le champagne à celui qui m'aide
    Champagne!

    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
     
    CREATE TYPE montype AS (valeur text[]);
     
    CREATE FUNCTION list_compte() 
    	RETURNS setof montype
    AS $$
    DECLARE monresultat montype;
    BEGIN
    	FOR monresultat IN SELECT array[login, password] FROM compte LOOP
    		RETURN NEXT monresultat;
    	END LOOP;
     
    	RETURN;
    END;
    $$ LANGUAGE plpgsql;
    En fait, SETOF demande de retourner un type colonne. C'est pourquoi je crée mon type. Tu peux également obtenir le même résultat avec une requête SQL directement (plus simple):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT array[login, password] from compte;

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 5
    Par défaut
    En fait, j'ai testé la solution d'estofilo et cela marche (Je n'ai pas dit que la soluation de kain_tn ne marchais pas hein ^^).
    Donc tu reçevras ta bouteille de champagne d'ici peu


    J'ai une autre petite question tout bête :

    quand on fait un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT champ AS alias_champ FROM champ
    comment fait-on pour mettre un espace dans l'alias ?
    Car l'underscore ne me convient pas.

    J'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT champ AS 'alias champ' FROM champ;
    mais sans succès.
    Savez-vous comment faire ?

    Merci en tout cas à vous deux.

  5. #5
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 061
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 061
    Par défaut
    Mets l'alias entre guillemets plutôt qu'entre quotes.
    Mais c'est plutôt déconseillé de mettre des espaces dans les noms ou alias .

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

Discussions similaires

  1. [Débutant] Retourner liste avec case à cocher
    Par lerorodu51 dans le forum Services Web
    Réponses: 3
    Dernier message: 19/04/2012, 11h29
  2. service web retourne liste des villes
    Par mitnick2006 dans le forum Services Web
    Réponses: 9
    Dernier message: 29/07/2010, 12h22
  3. retourner liste processus
    Par Hellgast dans le forum Threads & Processus
    Réponses: 1
    Dernier message: 28/05/2010, 11h34
  4. Réponses: 0
    Dernier message: 05/12/2007, 17h22
  5. [Java][Generics]Opération retournant List<MyClass>
    Par ptit-lu dans le forum BOUML
    Réponses: 7
    Dernier message: 30/07/2007, 19h27

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