sql >> Databáze >  >> RDS >> PostgreSQL

Použití pozičního parametru ($1,..) v psql

Můžete použít proměnné psql . Ty jsou interpolovány v kódu SQL. Podle dokumentace:

Upozorňujeme, že (podle dokumentace ):

Nemůžete tedy pracovat s pozičními parametry ve tvaru $1 . Předpokládám, že kopírujete tyto části kódu z těl funkcí, a to je důvod pro poziční parametry?
Od PostgreSQL 9.2 mohou i funkce SQL odkazovat na parametry podle názvu. Podle dokumentace:

Funkce PL/pgSQL podporují pojmenované parametry v těle funkce od verze 8.0.

Moje preferovaná konvence pojmenování je přidat před parametry funkce _ aby nedocházelo ke konfliktům v pojmenování. Ale to je věc vkusu a stylu.

Pouze poloviční řešení

Váš příklad by tedy mohl fungovat takto:

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

Stále musíte připravit řetězce dotazů ...
Všimněte si uvozovek v :'_name' . To má stejný účinek jako použití quote_literal() na provázku. Podrobnosti v příručce.



  1. Připojení k Oracle funguje prostřednictvím konzolové aplikace a nefunguje prostřednictvím webové služby

  2. JPA nepovoluje entity vytvořené ze sloupců z více tabulek?

  3. Spojit a více a podmínky

  4. Jak vytvořit vybraná dynamická pole z tabulky v mysql?