Vous n'êtes pas identifié(e).
Pages : 1
Bonjour,
j'ai un soucis avec la substitution de variables dans du psql.
J'aimerais créer des roles, schémas,... a partir de variables.
Exemple:
create role r_agu_dba;
J'essaie avec:
\set app = agu
create role r_:app_dba;
ERROR: syntax error at or near ":"
LINE 1: create role r_:app_dba;
alors que
create role r_:app;
CREATE ROLE
Quelle est la bonne syntaxe pour terminer une variable?
En Oracle : create role r_&app._dba;
Merci de votre aide.
Dominique Gigaud
Hors ligne
Bonjour,
A ma connaissance, il n'est pas possible d'utiliser des variables dans le DDL en PostgreSQL (mais je peux me tromper et je n'ai pas trouvé de page de la documentation qui allait dans ce sens).
Par contre, le wiki PostgreSQL propose d'encapsuler le code dans une fonction: https://wiki.postgresql.org/wiki/Dynamic_DDL
Bonne journée,
Arkhena
Hors ligne
La manière la plus simple est d'utiliser \set pour construire une nouvelle variable, car \set va concaténer les éléments sans séparateur.
Attention il n'y a aucun signe "égal" à mettre entre la variable et l'expression, sinon il va le prendre comme faisant partie de l'expression.
Exemple:
test=> \set app agu
test=> \set rolename r_ :app _dba
test=> \echo :rolename
r_agu_dba
test=> create role :"rolename";
CREATE ROLE
test=> select rolname from pg_roles order by oid desc limit 1;
rolname
-----------
r_agu_dba
(1 row)
@DanielVerite
http://blog-postgresql.verite.pro/
Hors ligne
Merci.
C'est exactement ce qu'il me fallait.
Bonne journée.
Dominique
Hors ligne
Pages : 1