sql >> Databasteknik >  >> RDS >> PostgreSQL

Använder positionsparameter ($1,..) i psql

Du kan använda psql-variabler . De är interpolerade i SQL-kod. Per dokumentation:

Observera att (per dokumentation ):

Så du kan inte arbeta med positionsparametrar av formen $1 . Jag antar att du kopierar dessa kodbitar från funktionskroppar, och det är anledningen till positionsparametrarna?
Sedan PostgreSQL 9.2 kan även SQL-funktioner referera till parametrar efter namn. Per dokumentation:

PL/pgSQL-funktioner har stött namngivna parametrar i funktionskroppen sedan v8.0.

Min föredragna namnkonvention är att lägga till funktionsparametrar med _ för att undvika namnkonflikter. Men det är en fråga om smak och stil.

Bara en halv lösning

Så ditt exempel kan fungera så här:

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

Du måste fortfarande förbereda frågesträngar ...
Observera citattecken i :'_name' . Det har samma effekt som att använda quote_literal() på snöret. Detaljer i manualen.



  1. TIMEDIFF() vs SUBTIME() i MySQL:Vad är skillnaden?

  2. CodeIgniter:Hur man gör en Select (Distinct Fieldname) MySQL-fråga

  3. Använd CSS Styling på PHP-utdata

  4. Koden när den körs öppnar jdbc-anslutningen men den skriver inte ut tabelldata. Vad är det för fel med den här koden?