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 suivantes1 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:
La premiere comparaison fonctionne pour ma fonction, mais ne fonctione pas pour la partie du select.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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;
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
Partager