PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Positionsparameter ($1,..) in psql verwenden

Sie könnten psql-Variablen verwenden . Diese werden in SQL-Code interpoliert. Pro Dokumentation:

Beachten Sie, dass (pro Dokumentation ):

Sie können also nicht mit Positionsparametern der Form $1 arbeiten . Ich nehme an, Sie kopieren diese Codeteile aus Funktionskörpern, und das ist der Grund für die Positionsparameter?
Seit PostgreSQL 9.2 können sogar SQL-Funktionen Parameter namentlich referenzieren. Pro Dokumentation:

PL/pgSQL-Funktionen unterstützen benannte Parameter im Funktionsrumpf seit v8.0.

Meine bevorzugte Namenskonvention besteht darin, Funktionsparametern _ voranzustellen um Namenskonflikte zu vermeiden. Aber das ist Geschmacks- und Stilsache.

Nur eine halbe Lösung

Ihr Beispiel könnte also so funktionieren:

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

Sie müssen noch Abfragezeichenfolgen vorbereiten ...
Beachten Sie die Anführungszeichen in :'_name' . Das hat den gleichen Effekt wie die Anwendung von quote_literal() auf der Schnur. Details im Handbuch.