Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/06/2004, 17h00   #1
Invité régulier
 
Inscription : juin 2004
Messages : 12
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 12
Points : 5
Points : 5
Par défaut [plpgsql] comment retourner un tableau

Bonjour,

J'aimerai savoir s'il est possible de retourner (dans une fonction) une table avec les colonne de notre choix (et plusieur colonne), et si oui comment attribuer attribuer a une colonne la valeur que je souhaite ?

Pour etre plus clair :

j'aimerai avoir comme retour de fonction le tableau suivant :

| activite | heure | prix | droit_acces | adhesion |
------------------------------------------------------------
| foot | 10h | 250 | 5 | 15 |
------------------------------------------------------------
| box | 10h | 150 | 5 | 0 |
------------------------------------------------------------

ps : j'ai aucune table qui respect se format (nom / type colonne)

Et si c'est possible, comment faire pour attribuer mes valeurs à la variable ? ( c'est comme en prog, ie tab[1][0] == 'foot') ?


Merci pour l'info.
A+
hpghost est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2004, 17h07   #2
Membre chevronné
 
Avatar de Spoutnik
 
Homme
Inscription : octobre 2003
Messages : 668
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 32
Localisation : Etats-Unis

Informations forums :
Inscription : octobre 2003
Messages : 668
Points : 746
Points : 746
c est possible en creant un type par exemple
Code :
1
2
3
4
5
6
7
8
 
CREATE TYPE type_retour_selection AS(
	activite text,
        heure date,
        prix integer,
       droit_acces integer ,
       adhesion integer
);
ensuite au niveau de ta fonction tu fais

Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
CREATE FUNCTION selectTruc(integer) RETURNS  type_retour_selection AS
'
DECLARE
Arg1 ALIAS FOR $1;
 
lignes_selection type_retour_selection%ROWTYPE;
BEGIN
SELECT INTO lignes_selection [b]requete de selection [/b]
.....
RETURN lignes_selection
....
ca marche que si t as qu une seule ligne a retourner, sinon, il faut rajouter SETOF dans la declaration de fonction et renvoyer les lignes une par une.

j espere que ca t aidera.

++
__________________
Two beer or not two beer. (Shakesbeer)
Question technique par MP => poubelle!
Spoutnik est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2004, 20h06   #3
Invité régulier
 
Inscription : juin 2004
Messages : 12
Détails du profil
Informations forums :
Inscription : juin 2004
Messages : 12
Points : 5
Points : 5
Yo !


Cool ! merci pour la reponse. Cependant, je me pose toujours une question : comment fait on pour assigner la nième lignes lorsque on met SETOF ? peut etre comme ca : lignes_selection[n] := blabla... ?

Merci
hpghost est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2004, 21h09   #4
Membre chevronné
 
Avatar de Spoutnik
 
Homme
Inscription : octobre 2003
Messages : 668
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 32
Localisation : Etats-Unis

Informations forums :
Inscription : octobre 2003
Messages : 668
Points : 746
Points : 746
pour renvoyer un jeu de resultat utilise une boucle for :

FOR lignes_selection IN requete
LOOP
RETURN NEXT lignes_selection;
END LOOP;

cherche pas a utiliser des lignes[i] en pgplsql, ca marchera pas

++
__________________
Two beer or not two beer. (Shakesbeer)
Question technique par MP => poubelle!
Spoutnik est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h50.


 
 
 
 
Partenaires

Hébergement Web