#1 Fri 05 June 2020 11:58
- YasmineB
- Participant occasionnel
- Date d'inscription: 20 Dec 2017
- Messages: 19
Intégrer une variable dans un nom de table [PG ADMIN]
Bonjour Ă tous,
Je travaille sur pg admin 4.12 et je ne parviens pas à résoudre mon problÚme depuis plusieurs jours malgré mes recherches.
Je souhaiterai intĂ©grer une variable dans le nom de mes tables pour qu'elle soit prise en compte lorsque je les appelle dans ma requĂȘte (INSERT INTO, FROM...).
Exemple concret : j'ai une table pour chaque dĂ©partement nommĂ©e avec le numĂ©ro de dĂ©partement (cadastre_95, cadastre_51, cadastre_02...) et lors de la mise Ă jour des donnĂ©es attributaires, je dois remplacer autant de fois le numĂ©ro de dĂ©partement que le nombre de fois oĂč la table est appelĂ©e (parfois jusqu'Ă 10 fois).
Pour contrer ce problĂšme j'aimerai utiliser une variable qui soit le numĂ©ro de dĂ©partement pour n'avoir qu'Ă changer celle-ci dans ma requĂȘte.
Voilà mon code qui, bien-sûr, ne fonctionne pas mais ça pourrait vous éclairer sur ma démarche :
DO $$
DECLARE variable text:= 14;
BEGIN
INSERT INTO foncier.cadastre_+variable(a, b)
SELECT 'tata', 'toto';
END $$;
Pouvez-vous m'éclairer de votre lanterne ?
Je vous remercie pour votre aide.
Yasmine
Hors ligne
#2 Fri 05 June 2020 12:21
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1566
Re: Intégrer une variable dans un nom de table [PG ADMIN]
Bonjour,
Lorsque vous voulez modifier le nom des objets dans une requete SQL, en pl/pgsql, il faut utiliser la syntaxe:
execute "string"
(https://www.postgresql.org/docs/9.6/plp … CUTING-DYN)
Code:
...
execute format('insert into foncier.cadastre_%s ...', code_dep);
...(au fait, pgadmin 4.2 est un client, qui peut se connecter a n'importe quelle version de PG: l'info importante ici est la version de PG et postgis que vous utilisez, pas le client)
Nicolas
Hors ligne
#3 Fri 05 June 2020 13:47
- YasmineB
- Participant occasionnel
- Date d'inscription: 20 Dec 2017
- Messages: 19
Re: Intégrer une variable dans un nom de table [PG ADMIN]
Bonjour,
Merci beaucoup pour votre rĂ©ponse que je garde en tĂȘte car trĂšs intĂ©ressante. En revanche, j'ai la contrainte de ne pouvoir travailler que sur l'interface de pg admin 4 directement donc je ne peux pas passer en pl/pgsql... Savez-vous comment faire dans ce cas ?..
Je vous remercie.
Yasmine
Hors ligne
#4 Fri 05 June 2020 15:55
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1566
Re: Intégrer une variable dans un nom de table [PG ADMIN]
PgAdmin 4 est un client: vous pouvez lancer tout le sql et pl/pgsql que vous voulez Ă travers ce client vers une bd PG !!
Vous pouvez créer des fonctions en pl/pgsql, des block anonymes (comme ce que vous avez fait) etc.
Vous pouvez créer des fonctions dans tous les langages supportés (a part c/c++) avec ce client: plpython, pljava, plperl, etc.
(et si vous avez ce client, alors vous avez les parametres de connexion a la BD: vous pouvez utiiiser le client de votre choix: psql, dbeaver, datagrip, qgis... (sauf dans le cas ou pgAdmin4 est lui-meme sur un serveur, et que vous n'avez pas d'accĂšs direct Ă la BD depuis votre poste)
Nicolas
Hors ligne
#5 Mon 08 June 2020 10:45
- YasmineB
- Participant occasionnel
- Date d'inscription: 20 Dec 2017
- Messages: 19
Re: Intégrer une variable dans un nom de table [PG ADMIN]
Bonjour,
Je vous remercie pour vos éclairages, je vais m'y atteler.
Yasmine
Hors ligne

