resultat d´un select comme base de comparaison
Salut à tous
j´ai deux tables numb1(avec comme colones: id, phone_number,email_adress, sip_adress,Port_number, url,delay) et numb1_layout(avec comme colones:id,name,min_value et max_value).
Dans la table numb1_layout j´ai les valeurs suivantes:(1 dans id, delay dans name, 0 dans min_value et 30 dans max_value).
Je souhaite ecire une fonction pour valider les valeurs entrées dans numb1 pour la colone delay et pour cela j´aimerai prendre à l´aide d´un select la valeur dans max_value de numb1_layout et l´utiliser comme base de comparaison.
Mon code se presente ainsi:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| CREATE OR REPLACE FUNCTION delay_check(integer)
RETURNS boolean AS
$BODY$
DECLARE
value integer;
delay alias for $1;
BEGIN
--Hier wird überprüft ob der eingegebene delay positiv oder negativ ist.
IF (delay < 0 )
THEN
Raise Exception 'Test|numb1|delay|WRONG_DELAY|%|is a wrong delay (% < 0)',delay,delay;
END IF;
SELECT max_value FROM numb1_layout WHERE id=1;
IF FOUND THEN SET SESSION value=max_value;
END IF;
--Hier wird überprüft ob der eingegebene Delay sich in dem Bereich eines Delays befindet.
IF (delay > value)
THEN
Raise Exception 'Test|numb1|delay|WRONG_DELAY|%|is a wrong delay (% > %}$',delay,delay,value;
END IF;
RETURN true;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
ALTER FUNCTION delay_check(integer) OWNER TO postgres; |
La premiere comparaison fonctionne pour ma fonction, mais ne fonctione pas pour la partie du select.
Est ce que quelqu´un aurait une idée comment est ce que je peux resoudre ce problème, ou un exemple qui traite un cas semblable.
Merci d´avance.
YP