Bonjour,

Tout d'abord je tiens à m'excuser si je ne poste pas au bon endroit (je n'ai pas vu de forum pour pl/pgsql).

Ma question maintenant :
J'essaie de recoder une variable age (de type integer) en classes (dans une nouvelle variable de type varchar).
Voici la fonction que j'ai créée :
Code plpgsql : 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
31
32
create or replace function ageclassesfunction() returns void as
$$
declare
	agevalue integer;
begin
	--ALTER TABLE personsample ADD COLUMN recodedage varchar(10);
	FOR agevalue IN SELECT age FROM personsample 
	LOOP       
       	        IF agevalue between 0 and 9 THEN
			update personsample set recodedage='[-10]';
		ELSEIF agevalue between 10 and 19 THEN
			update personsample set recodedage='[10-19]';
		ELSEIF agevalue between 20 and 29 THEN
			update personsample set recodedage='[20-29]';
		ELSEIF agevalue between 30 and 39 THEN
			update personsample set recodedage='[30-39]';
		ELSEIF agevalue between 40 and 49 THEN
			update personsample set recodedage='[40-49]';
		ELSEIF agevalue between 50 and 59 THEN
			update personsample set recodedage='[50-59]';
		ELSEIF agevalue between 60 and 69 THEN
			update personsample set recodedage='[60-69]';
		ELSEIF agevalue between 70 and 79 THEN
			update personsample set recodedage='[70-79]';
		ELSEIF agevalue between 80 and 89 THEN
			update personsample set recodedage='[80-89]';
		ELSE 
			update personsample set recodedage='[90+]';
		END IF;
	END LOOP;		
end
$$ LANGUAGE 'plpgsql';

Cette fonction s'exécute sans problème. Mais quand je l'appelle et que j'affiche la table, la variable recodedage prend la même valeur pour toutes les lignes. Et à chaque fois que je réexécute la fonction, la variable prend une autre valeur (toujours unique). Bien sûr l'âge est différent à chaque ligne et devrait implquer différentes classes.

Je ne comprends pas pourquoi. Est-ce un problème dans mes conditions ?

Merci d'avance,

Romain