#1 Fri 01 May 2015 09:04
- aladinh1
- Juste Inscrit !
- Date d'inscription: 30 Apr 2015
- Messages: 3
implémentation d'une fonction en utilisant le pl pgsql
bonjour,
Je suis un étudiant en géomatique et pour la dernière partie de mon projet de fin d'année je me trouve obligé de créer ma propre fonction sur postgresSQL postgis.
j'ai une couche batiments ayant pour colonnes (gid, perimetre, surface, occupation, delegation...., geom)
je voudrais calculer le pourcentage des surfaces des batiments ayant une occupation = Depot. ou autre
j'ai suivi un pdf pour m'initialiser au pl pgsql et j'ai réussi à faire
Code:
CREATE OR REPLACE FUNCTION poucent_occup(txt TEXT) RETURNS REAL AS $$ DECLARE k RECORD; j RECORD; m REAL DEFAULT 0; s REAL DEFAULT 0; f REAL DEFAULT 0; BEGIN FOR k IN SELECT surface FROM batiments WHERE occupation = txt LOOP s := s + k.surface; END LOOP; FOR j IN SELECT surface FROM batiments LOOP m := m + j.surface; END LOOP; f:= (s/m)*100; RETURN f; END; $$ LANGUAGE ’plpgsql’;
j'ai une erreur de syntaxe au 1er ou au deuxieme ligne
je vous remercie de m'aider afin d’en finir avec cette fonction
Hors ligne
#2 Mon 04 May 2015 09:44
- JP LLORENS
- Participant assidu
- Date d'inscription: 12 Nov 2008
- Messages: 231
Re: implémentation d'une fonction en utilisant le pl pgsql
Bonjour'
il doit manquer les quotes à 'txt' dans la boucle k => WHERE occupation = 'txt'
Cordialement
JP
Hors ligne
#3 Tue 05 May 2015 09:40
Re: implémentation d'une fonction en utilisant le pl pgsql
Bonjour,
pas d'erreur de mon coté en testant cette fonction, si ce n'est les quotes autour de plpgsql dans la déclaration du langage.
Si vous mettez des quotes autour de txt, c'est la chaine 'txt' qui sera recherchée et non la valeur du paramètre.
J'imagine que vous devez créer cette fonction avec des boucles mais vous pourriez tout aussi bien utiliser les fonctions d'agrégat (sum() )
Mathieu BOSSAERT
Association GeoRezo
Hors ligne
#4 Fri 15 May 2015 12:08
- aladinh1
- Juste Inscrit !
- Date d'inscription: 30 Apr 2015
- Messages: 3
Re: implémentation d'une fonction en utilisant le pl pgsql
merci pour vos réponses
évidement, les ' ' autour de plpgsql étaient la source de cet erreur.
Hors ligne