#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