IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PostgreSQL Discussion :

pb de procédure stockée


Sujet :

PostgreSQL

  1. #1
    Membre à l'essai
    Profil pro
    It manager
    Inscrit en
    Décembre 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : It manager

    Informations forums :
    Inscription : Décembre 2005
    Messages : 18
    Points : 20
    Points
    20
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 ;

  2. #2
    Membre éclairé Avatar de Spoutnik
    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    672
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 672
    Points : 781
    Points
    781
    Par défaut
    Hello,

    la variable de boucle doit etre de type RECORD.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DECLARE
       rec public.box2d;
      ....
    A priori, rec n'est pas un type RECORD/ROW. Si tu remplace ca par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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!

  3. #3
    Membre à l'essai
    Profil pro
    It manager
    Inscrit en
    Décembre 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : It manager

    Informations forums :
    Inscription : Décembre 2005
    Messages : 18
    Points : 20
    Points
    20
    Par défaut
    merci j'essaie

Discussions similaires

  1. passage d'un nom de table dans une procédure stockée
    Par thierry V dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 26/07/2010, 16h48
  2. Procédure stocké:Insert et renvoie de la clé primair
    Par caramel dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 17/04/2003, 09h34
  3. [Pervasive SQL ] procédure stockée
    Par magellan dans le forum Autres SGBD
    Réponses: 2
    Dernier message: 25/10/2002, 13h17
  4. Explication procédure stockée
    Par underworld dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 09/09/2002, 10h51
  5. [Comparatif] Procédures stockées, triggers, etc.
    Par MCZz dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 28/08/2002, 12h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo