sql >> Database teknologi >  >> RDS >> PostgreSQL

Brug af positionsparameter ($1,..) i psql

Du kan bruge psql-variabler . Disse er interpoleret i SQL-kode. Pr. dokumentation:

Bemærk, at (pr. dokumentation ):

Så du kan ikke arbejde med positionelle parametre af formen $1 . Jeg går ud fra, at du kopierer disse stykker kode fra funktionslegemer, og det er årsagen til positionsparametrene?
Siden PostgreSQL 9.2 kan selv SQL-funktioner referere til parametre efter navn. Pr. dokumentation:

PL/pgSQL-funktioner har understøttet navngivne parametre i funktionsteksten siden v8.0.

Min foretrukne navnekonvention er at sætte funktionsparametre foran med _ for at undgå navnekonflikter. Men det er et spørgsmål om smag og stil.

Kun en halv løsning

Så dit eksempel kunne fungere sådan her:

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

Du skal stadig forberede forespørgselsstrenge ...
Bemærk anførselstegnene i :'_name' . Det har samme effekt som at anvende quote_literal() på snoren. Detaljer i manualen.



  1. matchende tabeller navn med show tabeller

  2. Reneste måde at bygge en SQL-streng i Java

  3. Sammenkæd JSON-rækker

  4. SQL Server-forespørgsel timeout afhængigt af Where-klausul