Привязка параметров к запросу postgres в Perl с использованием имен - PullRequest
4 голосов
/ 23 марта 2012

Я работаю в сценарии Perl и хотел бы использовать именованные параметры для выполнения запроса в базе данных Postgres.В документации DBI говорится, что она не переносима:

Некоторые драйверы также позволяют заполнители, такие как: name и: N (например,: 1,: 2 и т. Д.) В дополнение?, но их использование не переносимо

Я бы все равно хотел это сделать.Кто-нибудь знает, реализует ли это драйвер Postgres?

Вместо выполнения запроса, подобного этому:

 $q = $pg->prepare($query);
 $q->bind_param(1, "value");
 $q->bind_param(2, "value");
 $q->execute();

Я хотел бы сделать что-то вроде этого:

 $q = $pg->prepare($query);
 $q->bind_param("parameterX", "value");
 $q->bind_param("parameterY", "value");
 $q->execute();

Ура!

РЕДАКТИРОВАТЬ

Правильный синтаксис выглядит следующим образом (я пропустил двоеточие):

 $q = $pg->prepare($query);
 $q->bind_param(":parameterX", "value");
 $q->bind_param(":parameterY", "value");
 $q->execute();

Ответы [ 2 ]

5 голосов
/ 24 марта 2012

Поддерживается , но не рекомендуется:

Последний тип заполнителя - "именованные параметры" в формате ": foo".Хотя этот синтаксис поддерживается DBD :: Pg, его использование не рекомендуется в пользу чисел со знаком доллара.

Различные типы заполнителей нельзя смешивать в утверждении, но вы можете использовать разные для каждого выражения.справиться у вас есть.В лучшем случае это сбивает с толку, поэтому придерживайтесь одного стиля в вашей программе.

0 голосов
/ 24 марта 2012

Драйвер Postgres находится в модуле DBD :: Pg (автономная документация: perldoc DBD::Pg).

...