U kunt psql-variabelen gebruiken . Die worden geïnterpoleerd in SQL-code. Per documentatie:
Merk op dat (per documentatie ):
U kunt dus niet werken met positionele parameters van de vorm $1
. Ik neem aan dat je deze stukjes code kopieert van functieteksten, en dat is de reden voor de positionele parameters?
Sinds PostgreSQL 9.2 kunnen zelfs SQL-functies naar parameters verwijzen op naam. Per documentatie:
PL/pgSQL-functies ondersteunen benoemde parameters in de functietekst sinds v8.0.
Mijn voorkeur voor naamgeving is om functieparameters vooraf te laten gaan door _
naamconflicten te voorkomen. Maar dat is een kwestie van smaak en stijl.
Slechts een halve oplossing
Uw voorbeeld zou dus als volgt kunnen werken:
db=> \set _name 'troy'
db=> \set _email '[email protected]'
db=> select * from users where name=:'_name' and email=:'_email';
U moet nog steeds queryreeksen voorbereiden ...
Let op de aanhalingstekens in :'_name'
. Dat heeft hetzelfde effect als het toepassen van quote_literal()
op het touw. Details in de handleiding.