PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 11/08/2012 18:11:08

MitsuTomoe
Membre

Boucle sur plusieurs vues

Bonjour,
j'ai une fonction qui doit boucler sur plusieurs vues d'une même table pour insérer des alertes dans une autre table.
Le traitement est identique, à un libellé près.
Est-il possible de ne pas dupliquer le traitement en ayant la liste des vues dans un tableau, ou avec un execute ?
Mes recherches n'ont rien donné.

Mon code actuel :

delete from agenda where typ_event = 3;
FOR vmandat IN SELECT * FROM v_mandat_renouv LOOP
... trt ...
  vdesc :="blabla";
  INSERT into agenda...
END LOOP;

FOR vmandat IN SELECT * FROM v_mandat_fin_exclu LOOP
... trt ...
  vdesc := "blibli";
  INSERT into agenda...
END LOOP;

J'ai le traitement de 3 autres vues à ajouter .
Merci pour vos idées

Hors ligne

#2 11/08/2012 18:53:34

rjuju
Administrateur

Re : Boucle sur plusieurs vues

Bonjour,

vous pouvez mettre votre FOR dans un autre FOR et utiliser une requête dynamique, par exemple :

FOR tbl IN SELECT relname FROM pg_class WHERE relkind = 'v' AND RELNAME like 'v_mandat%' LOOP
  FOR vcurrent IN EXECUTE 'SELECT * FROM ' || tbl.relname LOOP
    --traitement
  END LOOP;
END LOOP;

Hors ligne

#3 11/08/2012 20:39:42

MitsuTomoe
Membre

Re : Boucle sur plusieurs vues

Merci , je vais essayer .

Hors ligne

#4 13/08/2012 20:28:24

MitsuTomoe
Membre

Re : Boucle sur plusieurs vues

Ca marche super . J'ai juste corrigé "tbl.relname" en "tbl" .
Merci, je ne connais pas encore le méta-dictionnaire et n'ai pas le réflexe de l'utiliser.
Ca viendra smile

Hors ligne

#5 13/08/2012 20:47:08

rjuju
Administrateur

Re : Boucle sur plusieurs vues

Vous avez le dictionnaire système, mais si vous préférez il y a également des vues plus simples, comme pg_tables et pg_views dans votre cas.


Bon courage smile

Hors ligne

#6 16/08/2012 17:37:43

Marc Cousin
Membre

Re : Boucle sur plusieurs vues

Sinon, il y a aussi l'information_schema, qui est à peu près le même sur tous les SGBD qui l'implémentent.


Marc.

Hors ligne

Pied de page des forums