Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#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;
Julien.
https://rjuju.github.io/
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
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
Julien.
https://rjuju.github.io/
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
Pages : 1