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.