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 21/04/2006, 13h10   #1
Invité régulier
 
Inscription : décembre 2005
Messages : 16
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 16
Points : 9
Points : 9
Par défaut pb de procédure stockée

Postgres me renvoie cette erreur : loop variable of loop over rows must be record or row variable
Pourtant dans cette procédure je ne vois pas ce qui cloche, box2d est un type défini à partir de POSTGIS :
Code :
1
2
3
4
5
6
 
CREATE TYPE "public"."box2d" (INPUT = "public.box2d_in", OUTPUT = "public.box2d_out",
  INTERNALLENGTH = 16, EXTERNALLENGTH = 0,
  DELIMITER = ',', SEND = -,
  RECEIVE = -, ALIGNMENT = int4,
  STORAGE = plain);) :
Voici le procédure:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
CREATE OR REPLACE FUNCTION "public"."box_parcelles" (text, text) RETURNS SETOF public.box2d AS'
/* New function body */
DECLARE
  rec public.box2d;
  tmp TEXT;
  p ALIAS for $2;
  s ALIAS for $1;
 
BEGIN
  FOR rec IN SELECT box2d(wkb_geometry) from parcelles where section=s and parcelle=p
  LOOP
    RETURN NEXT rec;
  END LOOP;
  RETURN;
 
END;
'LANGUAGE 'plpgsql' VOLATILE ;
kvoskol est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2006, 22h44   #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
Hello,

la variable de boucle doit etre de type RECORD.
Code :
1
2
3
DECLARE
   rec public.box2d;
  ....
A priori, rec n'est pas un type RECORD/ROW. Si tu remplace ca par
Code :
rec public.box2d%ROWTYPE;
il me semble que ca devrait marcher
ou "rec RECORD;" (pas sur que ca marche ca)
__________________
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 25/04/2006, 15h41   #3
Invité régulier
 
Inscription : décembre 2005
Messages : 16
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 16
Points : 9
Points : 9
merci j'essaie
kvoskol 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 10h50.


 
 
 
 
Partenaires

Hébergement Web