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 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 smile

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

MathieuB
Membre du bureau
Lieu: Montpellier
Date d'inscription: 18 Jan 2006
Messages: 1222
Site web

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 smile
évidement, les ' ' autour de plpgsql étaient la source de cet erreur.

Hors ligne

 

Pied de page des forums

Powered by FluxBB