Можете да използвате psql променливи . Те са интерполирани в SQL код. Съгласно документацията:
Имайте предвид, че (по документация ):
Така че не можете да работите с позиционни параметри от формата $1
. Предполагам, че копирате тези парчета код от тела на функции и това е причината за позиционните параметри?
От PostgreSQL 9.2 насам дори SQL функциите могат да препращат към параметрите по име. Съгласно документацията:
PL/pgSQL функциите поддържат именувани параметри в тялото на функцията от v8.0.
Предпочитаната от мен конвенция за именуване е параметрите на функцията да се добавят с _
за да се избегнат конфликти при именуване. Но това е въпрос на вкус и стил.
Само половината решение
И така, вашият пример може да работи така:
db=> \set _name 'troy'
db=> \set _email '[email protected]'
db=> select * from users where name=:'_name' and email=:'_email';
Все още трябва да подготвите низове за заявки ...
Обърнете внимание на кавичките в :'_name'
. Това има същия ефект като прилагането на quote_literal()
на низа. Подробности в ръководството.