Re: passage parametre psql vers fichier sql

Cédric Villemain <[email protected]> Wed, 20 Dec 2017 19:28:32 +0100
Newsgroups gmane.comp.db.postgresql.french
Message-ID <CADKA0TLGsJisH+ZRfCRHKH912L6aacs6YJzPT=MJpwTnpfoTfA@mail.gmail.com>
Le 20 décembre 2017 à 18:40, CRUMEYROLLE Pierre <[email protected]>
a écrit :

> bonjour
>
> soit un fichier sql : compare_idli.sql
>
> select   'Delta found R_DESC_PLANCHE--> ' as Delta ,
> ID_CV_PRINC,ID_DESC_PL FROM (SELECT * FROM schema_cnes.R_DESC_PLANCHE WHERE
> id_cv_princ=:vol  except SELECT * FROM schema_cssi.R_DESC_PLANCHE WHERE
> id_cv_princ =: vol ) as result WHERE (ID_CV_PRINC,ID_DESC_PL) IN (SELECT
> ID_CV_PRINC,ID_DESC_PL FROM schema_cssi.R_DESC_PLANCHE) ;
>
>
ce n'est pas très lisible...et il semble y avoir un espace en trop entre
":" et "vol"



> je veux passe en paramètre  vol=V038
>
> psql -h seacev-pp -p 5452 -U postgres db_compare -a -v vol=V038  -f
> compare_idli.sql
>
> je ne trouve pas le moyen de mettre de cotes
> le WHERE id_cv_princ=:vol se transforme en WHERE id_cv_princ='V038'
>

heu ... dans l'exemple ci-dessus le comportement est correct (je n'ai pas
testé, je ne fais que lire ce que vous avez écrit)...quel est le problème
rencontré ?

Du coup, voici un exemple complet, simple, lisible et reproductible:

$ cat /tmp/a.sql
select :param;

$ psql -f /tmp/a.sql -v param=\'tr\'\'uc\'
 ?column?
----------
 tr'uc


-- 

Cédric Villemain +33 (0)6 20 30 22 52http://2ndQuadrant.fr/
PostgreSQL: Support 24x7 - Développement, Expertise et Formation