Vous n'êtes pas identifié(e).

#1 05/12/2009 13:55:20

imenisg
Membre

duree

Bonjour
je veux faire une fonction qui calcule la durée  entre deux positions
j’ai écrit cette fonction et j’ai comme paramètre le nom de table el les colonnes et les deux positions   
CREATE OR REPLACE FUNCTION during(character varying, character varying, character varying, integer, text, text)
  RETURNS interval AS
$BODY$DECLARE
req1 text;
req2 text;
st1 time with time zone  ;
st2 time with time zone;
table_name alias for $1;
colonne_name alias for $2;
col_name alias for $3;
imm alias for $4;
f1 alias for $5;
f2 alias for $6;



BEGIN



req1 := $req1$ SELECT hhh FROM $req1$||table_name ||$req1$ where Distance($req1$||colonne_name ||$req1$,'$req1$||f1||$req1$')=0 AND immat = $req1$||imm ;
req2 := $req2$ SELECT $req1$||col_name ||$req1$ FROM $req2$||table_name ||$req2$ where Distance($req1$||colonne_name ||$req1$,'$req2$||f2||$req2$')=0 AND immat = $req2$||imm ;
EXECUTE req1 INTO st1 ;
EXECUTE req2 INTO st2 ;


RETURN (st1-st2);



END
$BODY$
  LANGUAGE 'plpgsql' VOLATILE
  COST 100;
ALTER FUNCTION during(character varying, character varying, character varying, integer, text, text) OWNER TO postgres;
puis
SELECT during(' deplacee ' ,' posit ' , ' hhh ',5,' POINT(191232  243118)' ,' POINT(191232  243115)');

jai comme resultat

ERROR:  parse error - invalid geometry
CONTEXT:  SQL statement " SELECT $req1$||col_name ||$req1$ FROM  deplacee  where Distance($req1$||colonne_name ||$req1$,' POINT(191232  243118)')=0 AND immat = 5"
PL/pgSQL function "during" line 22 at EXECUTE statement

Hors ligne

#2 05/12/2009 15:18:21

gleu
Administrateur

Re : duree

req2 n'est pas correctement initialisé. Il y des $req2$ et des $req1$ qui s'entrecoisent, ce qui fout un joli boxon. Bref, faut corriger ça.


Guillaume.

Hors ligne

#3 05/12/2009 15:59:45

imenisg
Membre

Re : duree

merci merci jai pas fait attention

Hors ligne

Pied de page des forums