2012-10-28 2 views
3

J'essaie d'obtenir un jeu de données à partir d'une fonction PostgreSQL 9.0 et je ne suis pas capable de le faire avec des procédures stockées.Comment obtenir un jeu de données à partir de PostgreSQL 9.0 Fonction ("procédure stockée")

Je suis nouveau à Postgres cette semaine alors laissez-moi vous expliquer mes termes:

Dans pgAdmin III je peux entrer la commande suivante:

SELECT * FROM member; 

et recevoir la sortie des données suivantes:

memberid membername 
1   Bill Smith 
2   Joe Smith 

J'ai essayé de créer de nombreuses fonctions (tables/SETOF/etc) à peu près comme:

Quand je les exécuter dans pgAdmin (ou les appeler d'un programme) Je reçois le texte suivant:

SELECT get_all_members() 

Résultats:

get_all_members 
member 
(1, "Bill Smith") 
(2, "Joe Smith") 

est là de toute façon d'obtenir cela comme un ensemble de données de une fonction (procédure stockée) comme je peux avec la saisie directe des commandes SQL.

Votre aide est grandement appréciée !!!

+1

Cette sortie est une colonne unique contenant un * record *, qui est une sorte de * type composite *. PostgreSQL prend en charge le traitement des lignes en tant que valeurs. 'SELECT get_all_members()' fait l'équivalent de 'SELECT x FROM get_all_members() x' quand vous voulez' SELECT * FROM get_all_members() '. –

Répondre

2

Vous pouvez obtenir la sortie par colonne en modifiant l'instruction select un peu il ressemble à ceci:

SELECT * FROM get_all_members() 

Cela vous donnera la colonne par la sortie de la colonne comme faire la requête normalement.

Voir set returning functions dans la documentation.

+0

Je reçois le même résultat. En fait pgAdmin III avait ajouté le langage SQL pour moi. –

+0

J'ai modifié par réponse, je pensais que le langage SQL a résolu, mais vous devez modifier la requête SQL suivante où vous essayez d'obtenir les données de la fonction afin de ressembler à: 'SELECT * FROM get_all_members()' –

+0

beaucoup - cela fonctionne à la fois de PHP et pgAdmin III !!! –

Questions connexes