Bonjour,
j'aimerais faire une fonction pgsql contenant un loop d'une fonction renvoyant des lignes d'un tableau.
Pour chacune de ces lignes j'aimerais faire un deuxiement traitement. Sauf que je ne sais pas comment faire pour lire les donnees d'un loop...
Si vous pouviez me donner une idee ... merci
Exemple
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48 CREATE TABLE truc ( id_truc integer, sousid_truc integer, nom_truc text ) WITH ( OIDS=FALSE ); ALTER TABLE truc OWNER TO postgres; CREATE OR REPLACE FUNCTION obtenirTousLesTrucs() RETURNS SETOF tructest AS $BODY$ DECLARE r tructest%rowtype; BEGIN FOR r IN SELECT * FROM truc WHERE id_truc > 0 LOOP -- quelques traitements RETURN NEXT r; -- renvoie la ligne courante du SELECT END LOOP; RETURN; END $BODY$ LANGUAGE 'plpgsql' ; CREATE OR REPLACE FUNCTION obtenirTousLesTrucs2() RETURNS integer AS $BODY$ DECLARE r tructest%rowtype; test integer; BEGIN FOR r IN SELECT * FROM obtenirTousLesTrucs() LOOP -- quelques traitements INSET INTO machin (montext) VALUES (r.nom_truc); END LOOP; RETURN; END $BODY$ LANGUAGE 'plpgsql' ; SELECT * FROM obtenirTousLesTrucs2();
Partager