Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
#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