Bonjour,
Je ne connais absolument pas la syntaxe du langage pl/pqsql, j'ai néanmoins entrepris d'écrire une fonction me permettant d'exécuter une mise à jour de table en traitant les polygones par paquets de 500 (limite de ma machine). L'objet de ma requête est de transformer des Multipolygones en polygones. Voici mon code, mais j'ai un gros doute doute sur le RETURNS. Je ne sais pas si je m'y prend correctement car je ne veux pas forcément quelque chose en retour de fonction.
Si quelqu'un peut m'aider
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 CREATE OR REPLACE FUNCTION Poly_eclat() RETURNS record AS $$ DECLARE id integer DEFAULT 0; id_mem integer DEFAULT 0; id_big_loop integer DEFAULT 0; BEGIN WHILE id_big_loop <= 43848 LOOP id_mem :=id ; LOOP --Nous incrémentons par paquets de 500 IF id > id_mem + 500 THEN EXIT; END IF; INSERT INTO union_buff_eclat (the_geom) VALUES (SELECT st_geometryN(a.the_geom, generate_series(id, id + 500)) as the_geom FROM "union_buff" a); id := id +1; id_big_loop := id_mem; END LOOP; END LOOP; END; $$ LANGUAGE plpgsql VOLATILE;
Merci
Partager