PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Utilisation du paramètre positionnel ($1,..) dans psql

Vous pouvez utiliser variables psql . Ceux-ci sont interpolés en code SQL. Par documentation :

Notez que (par documentation ):

Vous ne pouvez donc pas travailler avec des paramètres positionnels de la forme $1 . Je suppose que vous copiez ces morceaux de code à partir des corps de fonction, et c'est la raison des paramètres positionnels ?
Depuis PostgreSQL 9.2, même les fonctions SQL peuvent référencer les paramètres par leur nom. Par documentation :

Les fonctions PL/pgSQL supportent les paramètres nommés dans le corps de la fonction depuis la v8.0.

Ma convention de nommage préférée est de faire précéder les paramètres de fonction de _ pour éviter les conflits de noms. Mais c'est une question de goût et de style.

Seulement une demi-solution

Ainsi, votre exemple pourrait fonctionner comme ceci :

db=> \set _name 'troy'
db=> \set _email '[email protected]'
db=> select * from users where name=:'_name' and email=:'_email'; 

Vous devez encore préparer les chaînes de requête...
Notez les guillemets dans :'_name' . Cela a le même effet que d'appliquer quote_literal() sur le fil. Détails dans le manuel.