Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 23/05/2014 15:56:43
- Sadewizz
- Membre
fonction union de toutes les tables
Bonjour,
Ci dessous j'ai essayer de mettre en place une fonction me permettant de récupérer certaines infos sur mes tables en faisant une union entre elles.
seulement la fonction s'effectue mais me renvoie 0 résultat avec la requête suivante :
select * from table_union();
Mon code :
CREATE OR REPLACE FUNCTION table_union () RETURNS table(i text, n text, g geometry)
language plpgsql
as
$BODY$
DECLARE
tables record;
BEGIN
FOR tables IN SELECT tablename FROM pg_tables where tablename
IN
(select tablename from pg_tables where schemaname ='france' and tablename in (SELECT f_table_name FROM geometry_columns where f_table_name not like '%_t' and f_table_name not like 'france_littoral' and f_table_name not like 'box%' and f_table_name not like 'rast%'))
LOOP
Execute 'select '||quote_ident (tables.tablename)||'.id as id, '||quote_ident(tables.tablename)||'.nom_donnee as nom, '||quote_ident(tables.tablename)||'.the_geom_wgs84 as yhe_geom from '||quote_ident(tables.tablename)||';'
RETURN ;
END LOOP;
END
$BODY$;
Avez vous une idée de la provenance de mon / mes erreurs?
Merci pour d'éventuelles éclaircicement et bon week end a vous!!
Hors ligne
#2 23/05/2014 16:28:23
- Géronimo
- Membre
Re : fonction union de toutes les tables
Essai RETURN NEXT à la place de ton RETURN à la fin de ton script...
Hors ligne
#3 23/05/2014 16:31:04
- Sadewizz
- Membre
Re : fonction union de toutes les tables
Re salut,
Pour ceux que sa intéressent, j'ai pu résoudre mon problème (avec un peu de chance).
--drop function table_union();
CREATE OR REPLACE FUNCTION table_union () RETURNS table (i varchar, n varchar, g geometry)
language plpgsql
as
$BODY$
DECLARE
tables record;
BEGIN
FOR tables IN SELECT tablename FROM pg_tables where tablename
IN
(select tablename from pg_tables where schemaname ='france' and tablename in (SELECT f_table_name FROM geometry_columns where f_table_name not like '%_t' and f_table_name not like 'france_littoral' and f_table_name not like 'box%' and f_table_name not like 'rast%'))
LOOP
return query Execute 'select '||quote_ident (tables.tablename)||'.id , '||quote_ident(tables.tablename)||'.nom_donnee, '||quote_ident(tables.tablename)||'.the_geom_wgs84 from '||quote_ident(tables.tablename)||';'
RETURN ;
END LOOP;
END
$BODY$;
Le "RETURN QUERY" a tout changé il faut croire.
Bon week end!
Sadewizz (steack de cerf! )
Hors ligne
#4 23/05/2014 16:33:21
- Géronimo
- Membre
Re : fonction union de toutes les tables
Je crois que juste en modifiant le RETURN de ton premier script en RETURN NEXT, tu aurais pu avoir le même résultat...
Hors ligne
#5 23/05/2014 16:33:57
- Sadewizz
- Membre
Re : fonction union de toutes les tables
Salut Géronimo,
Il me semble qu'avec "RETURN NEXT", il me signalait un erreur de syntaxe...
Mais merci pour ton intervention .
Hors ligne
#6 23/05/2014 16:35:28
- Géronimo
- Membre
Re : fonction union de toutes les tables
T'avais peut-être pas mis de ; à la fin... Parce que moi, ça marche avec RETURN NEXT.
Hors ligne
Pages : 1