Puoi usare variabili psql . Quelli sono interpolati nel codice SQL. Per documentazione:
Tieni presente che (per documentazione ):
Quindi non puoi lavorare con parametri posizionali della forma $1 . Presumo che tu copi questi pezzi di codice dai corpi delle funzioni, e questo è il motivo dei parametri posizionali?
Da PostgreSQL 9.2, anche le funzioni SQL possono fare riferimento ai parametri per nome. Per documentazione:
Le funzioni PL/pgSQL supportano i parametri denominati nel corpo della funzione dalla v8.0.
La mia convenzione di denominazione preferita è quella di anteporre i parametri della funzione con _ per evitare conflitti di denominazione. Ma è una questione di gusto e di stile.
Solo mezza soluzione
Quindi, il tuo esempio potrebbe funzionare in questo modo:
db=> \set _name 'troy'
db=> \set _email 'example@sqldat.com'
db=> select * from users where name=:'_name' and email=:'_email';
Devi ancora preparare le stringhe di query ...
Nota le virgolette in :'_name' . Questo ha lo stesso effetto dell'applicazione di quote_literal() sulla corda. Dettagli nel manuale.