Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Printemps des cartes 2024

#1 Wed 17 March 2010 16:40

Xap
Juste Inscrit !
Date d'inscription: 17 Mar 2010
Messages: 3

[PostGis] Création d'une fonction Pl/PgSql

Bonjour,

j'ai crée une fonction dans une base postgis, mais dès que j'appelle cette fonction ( SELECT avancementparroute('D57') ), j'ai le message suivant :

ERROR:  type "geometry" does not exist
CONTEXT:  compile of PL/pgSQL function "avancementparroute" near line 4

Pourtant, il y a déjà d'autres fonctions dans mon schéma utilisant le type geometry.  : (

Voilà le début de ma fonction :

CREATE OR REPLACE FUNCTION avancementparroute(idroute character varying)
  RETURNS double precision AS
$BODY$
DECLARE

    longueur double precision;
    troncon geometry;

BEGIN 


Je crois que c'est la ligne "troncon geometry;" qui pose problème. La variable troncon est bien utilisée dans le code.

Merci pour votre aide.

Hors ligne

 

#2 Mon 29 March 2010 17:38

Xap
Juste Inscrit !
Date d'inscription: 17 Mar 2010
Messages: 3

Re: [PostGis] Création d'une fonction Pl/PgSql

Bonjour,

Je n'ai pas résolu mon problème précédent, par contre si j'appelle ma fonction depuis mon code php ça marche ! 
: /

Quelqu'un n'aurait pas une idée pour la tester depuis PgAdmin ?

Dernière modification par Xap (Tue 30 March 2010 11:52)

Hors ligne

 

#3 Tue 06 April 2010 11:03

Xap
Juste Inscrit !
Date d'inscription: 17 Mar 2010
Messages: 3

Re: [PostGis] Création d'une fonction Pl/PgSql

Bonjour,

Ca y est j'arrive à tester ma fonction depuis pgAdmin !
En fait avant d'appeler ma fonction, j'avais fait set search_path = monSchéma. J'avais oublié de mettre public. Du coup il ne trouvait pas les fonctions ...

Bref, j'ai maintenant un nouveau problème.
Si j'exécute une fonction du type
SELECT the_geom FROM maTable WHERE datedebut = 'ma date'
Il me retourne une seule géométrie de type  GEOMETRYCOLLECTION
Plus précisément, si je fais un select astext(the_geom), il me renvoie :
"GEOMETRYCOLLECTION(LINESTRING(638846.069438331 1946474.65340544,638832.932083568 1946468.78024556))"

Maintenant, si je fais cette requête dans une fonction pl/pgsql, du type :

FOR troncon IN (SELECT the_geom FROM maTable WHERE datedebut = 'ma date') ...
suivi de FOR i IN 1 .. numgeometries(troncon) LOOP

Il me renvoie 8 tronçons !!! Tous d'un longueur différente ce qui laisse penser que c'est 8 tronçons différents.


Je n'y comprend rien !!

Est-ce que quelqu'un a déjà rencontré ce problème ?
Merci pour votre aide, une petite piste peut suffire ...

Dernière modification par Xap (Thu 08 April 2010 14:13)

Hors ligne

 

Pied de page des forums

Powered by FluxBB