Aloha,

Je construis une fonction pour basculer mes géométries d'une colonne à une autre sur l'ensemble des tables d'une base de données.

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
CREATE OR REPLACE FUNCTION h_ile.test_update_geom() RETURNS integer AS $$
DECLARE
    tgeom RECORD;
BEGIN
    RAISE NOTICE 'Ajout d''une colonne geom plus OGC....';
 
    FOR tgeom IN 
		SELECT * FROM geometry_columns inner join information_schema.tables 
		on table_schema = f_table_schema and table_name = f_table_name and table_type = 'BASE TABLE'
		where... LOOP 
...
EXECUTE 'UPDATE '||quote_ident(tgeom.f_table_schema)||'.'||quote_ident(tgeom.f_table_name)
			||' SET the_geom_test='||quote_ident(tgeom.f_table_name)||'.'||quote_ident(tgeom.f_geometry_column);
 
...
END LOOP;
 
    RAISE NOTICE 'Mise à jour terminée';
    RETURN 1;
END;
$$ LANGUAGE plpgsql;
En résultat, mes colonnes sont bien créées par le début du code (absent de ce message), les index, idem, mais aucune géométrie n'est updatée dans la nouvelle colonne "the_geom_test".

Si j'essaie le code update en dehors de la fonction, il fonctionne.

Comment faire ? Quel peut-être la source du problème rencontré ?

D'avance, merci.