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 04/04/2005, 16h26   #1
Membre à l'essai
 
Inscription : avril 2004
Messages : 89
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : avril 2004
Messages : 89
Points : 21
Points : 21
Envoyer un message via MSN à mereyj
Par défaut return setof text[]

Voila le code :

CREATE OR REPLACE FUNCTION interville () RETURNS SETOF text[] AS'
BEGIN
select location.location as city, count(locate.nmovie) as movies_count
from location, locate
where locate.nlocation = location.nlocation
group by location.location
order by movies_count desc;
END;'
LANGUAGE plpgsql;

select * from interville ()

Voila le probleme:

ERROR: SELECT query has no destination for result data
HINT: If you want to discard the results, use PERFORM instead.
CONTEXT: PL/pgSQL function "interville" line 2 at SQL statement

In statement:
select * from interville ()

Je ne comprend pas.
Please help me.
Je tiens a preciser que le type de retour m est impose.
mereyj est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/04/2005, 09h29   #2
Membre habitué
 
Inscription : mai 2002
Messages : 131
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 131
Points : 142
Points : 142
C'est normal, un SELECT dans une procédure pgplsql n'est pas interprété comme valeur de retour. Et même si c'était le cas, tu retournerais un "setof record", ici.

Je n'ai pas testé, mais je pense que ce code fonctionne :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
CREATE OR REPLACE FUNCTION interville () RETURNS SETOF text[] AS'
DECLARE
  ligne record;
  infos text[];
BEGIN
  FOR ligne IN ("requête sql") LOOP
    infos[0] := ligne.champ1;
    infos[1] := ligne.champ2;
    RETURN NEXT infos;
  END LOOP;
  RETURN;
END;'
LANGUAGE plpgsql;
Quentin 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 06h02.


 
 
 
 
Partenaires

Hébergement Web