Vous n'êtes pas identifié(e).
Pages : 1
Bonjour,
j'ai un code qui est bien écrit, je suppose, mais qui ne retourne aucun résultat.
ça tourne, mais à la fin je n'ai une insertion ni dans la table ips, ni dans la table peers!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
create or replace FUNCTION mape_add_peer(inet,integer) RETURNS integer
AS $$
DECLARE
p_addr ALIAS for $1;
p_port ALIAS for $2;
ipid integer;
peerid integer;
BEGIN
-- Is the peer already set ?
select into peerid peers.id from peers, ips
where peers.ip = ips.ip and peers.id = ips.id and peers.ip = p_addr and peers.port = p_port;
IF peerid = 0
then
------ Get the ID corresponding to the address
select into ipid id from ips where ips.ip= p_addr;
IF ipid >= 1
then
insert into peers(ip, port, tmstmp) values (p_addr, p_port, date_trunc ('minute', current_timestamp));
select into peerid currval('peers_id_seq');
else
insert into ips(ip,md5) values (addr,'-');
select into ipid currval('ips_id_seq');
insert into peers(ip, port, tmstmp) values (p_addr, p_port, date_trunc ('minute', current_timestamp));
select into peerid currval('peers_id_seq');
end IF;
end IF;
return peerid;
end;$$
LANGUAGE plpgsql;
Hors ligne
Peut être que peerid est différent de zéro ...
Pourquoi ne pas utiliser RAISE NOTICE pour tracer temporairement le déroulement de ta fonction ?
damien clochard
http://dalibo.org | http://dalibo.com
Hors ligne
j'ai complété la condition, "else return peerid;"
et j'ai fait des raise notice à chaque étape, toujours rien!!!!!!!!!!!!!!!
Hors ligne
j'ai complété la condition, "else return peerid;"
et j'ai fait des raise notice à chaque étape, toujours rien!!!!!!!!!!!!!!!
C'est à dire ?
Aucun des raise notice ne s'affiche ? Que disent les logs ?
damien clochard
http://dalibo.org | http://dalibo.com
Hors ligne
mape_add_peer
---------------
(1 file)
tu vois?
Hors ligne
Tu l'exécutes comment, la fonction?
Hors ligne
select mape_add_peer ('192.168.1.13',80);
une @ ip et un numéro de port quelconques commes entrées!!!!!
Hors ligne
Difficile de dire pourquoi, mais il est clair que, comme peerid est NULL, il n'y a pas d'insertion.
Guillaume.
Hors ligne
mais il doit me retourner la valeur même si elle est nulle!!!!
Hors ligne
Je crois que vous confondez NULL et 0. NULL, c'est en quelque sorte une absence de valeur.
Oh, et petit conseil, arrêtez avec le point d'exclamation, ça commence à être énervant.
Guillaume.
Hors ligne
Pages : 1