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 06/09/2006, 16h21   #1
Membre régulier
 
Inscription : avril 2004
Messages : 284
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 284
Points : 75
Points : 75
Par défaut Affecter résultat d'une fonction à une variable ?

Bonjour,

Débutant avec le SQL, je galère un peu pour insérer dans une variable le résultat d'une requête ou d'une fonction;

J'ai une fonction get_last_gids() renvoyant le dernier enregistrement d'une table :

CREATE FUNCTION get_last_gids() RETURNS INTEGER AS '
SELECT gid_id from gids ORDER BY compt DESC LIMIT 1;'
LANGUAGE 'SQL';

Je voudrais dans une fonction PL/PGSQL affecter à une variable le résultat de cette fonction :

CREATE FUNCTION update_gids_links() RETURNS TEXT AS '
DECLARE
last_gids INTEGER;
BEGIN
SELECT INTO last_gids FROM (SELECT gid_id from gids ORDER BY compt)
ou SELECT INTO last_gids EXECUTE get_last_gids();
DESC LIMIT 1);
RETURN last_gid;
END;
' LANGUAGE 'PLPGSQL';

Mais dans les 2 cas, j'ai une erreur.

Sauriez-vous comment remédier à cela ?

En vous remerciant,

C. Tobini
ctobini est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2006, 16h35   #2
Rédactrice
 
Avatar de Fleur-Anne.Blain
 
Inscription : juillet 2006
Messages : 2 662
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 2 662
Points : 5 590
Points : 5 590
Pourquoi dans ton premier select tu ne mets pas de champs de table???

Code :
1
2
 
SELECT nom_champ INTO nom_var FROM....
__________________
la culture c'est comme la confiture moins on en a plus on l'étale.

Vous souhaitez contribuer aux rubriques Solutions d'entreprises ou BI, contactez-moi

Mes tutos
Fleur-Anne.Blain est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2006, 14h45   #3
Membre régulier
 
Inscription : avril 2004
Messages : 284
Détails du profil
Informations forums :
Inscription : avril 2004
Messages : 284
Points : 75
Points : 75
Bonjour et merci de ta réponse, ça fonctionne très bien.

J'ai réécris à l'identique ma fonction est maintenant ça marche aussi (?).

Pour l'info :

DECLARE
var as INTEGER;
BEGIN
var := ma_fonction();
ou var := (SELECT...)
RETURN ...
END;

Et c'est bon.

C. Tobini
ctobini est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h16.


 
 
 
 
Partenaires

Hébergement Web