PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Използване на позиционен параметър ($1,..) в psql

Можете да използвате 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() на низа. Подробности в ръководството.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Възможно ли е да се съхрани 1 байт номер в Postgres?

  2. Грешка в PostgreSQL:Фатално:потребителското име на ролята не съществува

  3. Откриване и обработка, когато заявка към база данни се обърка

  4. gem install pg --with-pg-config работи, пакетът се проваля

  5. Услугата PostgreSQL не може да спре/стартира/рестартира