powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / prepared and run with bind parameters
16 сообщений из 16, страница 1 из 1
prepared and run with bind parameters
    #32983700
_YO_GA_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
"SQL statements can be prepared and run with bind parameters"
Не могу понять как в PostgreSQL работает механизм...
Примерно знаю как это в ORACLE , а в postgres - не пойму даже какую главу документации читать... может кто подскажет куда рыть? может какие статейки есть с примерами?
...
Рейтинг: 0 / 0
prepared and run with bind parameters
    #32984221
wbear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
смитри описание PREPARE в доках

Код: plaintext
1.
2.
3.
PREPARE usrrptplan (int, date) AS    SELECT * FROM users u, logs l WHERE u.usrid=$ 1  AND u.usrid=l.usrid    AND l.date = $ 2 ;
EXECUTE usrrptplan( 1 , current_date);
DEALLOCATE usrrptplan;

p.s. этот EXECUTE не тот EXECUTE который в plpgsql
...
Рейтинг: 0 / 0
prepared and run with bind parameters
    #32984231
Fabrichenko Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты bind сделать вообще где пытаешься??
-- plpgsql
-- java
...

где? в зависимости от этого и рез будет разный ;-)
--------------------------------------
жизнь как пестня
...
Рейтинг: 0 / 0
prepared and run with bind parameters
    #32984400
_YO_GA_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да разбираюсь как работает перловый модуль DBD::Pg
...
Рейтинг: 0 / 0
prepared and run with bind parameters
    #32984469
wbear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дык тебе тада надо

$sth = $db->prepare("select a from my_table shere a=?");
$sth->execute(12);
while( @a = $sth->fetchrow_array() )
{
...
print $a[0];
}
$sth->finish();
...
Рейтинг: 0 / 0
prepared and run with bind parameters
    #32984498
_YO_GA_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да я как раз-таки разбираюсь как это на стороне сервера работает
просто нашел в логах PG запросы типа UPDATE .... $1, $2, $5
и не понял как он их выполнял
...
Рейтинг: 0 / 0
prepared and run with bind parameters
    #32984505
_YO_GA_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
при этом ни PREPARE, ни EXECUTE не увидел
наверное логирование так реализовано что показывается только исходный запрос....
...
Рейтинг: 0 / 0
prepared and run with bind parameters
    #32984549
wbear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
перловый драйвер для PG подставляет пласехлдеры сам !!!! .. неумеет он делать perpare и execute , а то что ты видел в логах это скорее всего апдейт от ХП .

p.s будь осторожен перловый драйвер для PG глюкаво (последнюю версию не видел) особенно в отношении пласехолдеров, но тем не мение пласехолдеры полезная практика.
...
Рейтинг: 0 / 0
prepared and run with bind parameters
    #32984708
_YO_GA_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Во, хоть один человек нашелся, владеющей хоть какой-то инфой про DBD::Pg
Помоги плиз, натолкни на верный путь....
У меня проблема такого рода:
http://mail.ice.ru/lists/dev/2005-March/001587.html
...
Рейтинг: 0 / 0
prepared and run with bind parameters
    #32984726
_YO_GA_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Там правда (по ссылке) немного лишней инфы , если вкратце, то перловый скрипт генерит и выполняет запросы, и при insert/update иногда происходит ошибка "Выражение варчар, хотя поле integer!". Смотрю на параметры, которые вместо плейсхолдеров подставлюятся - все должно быть нормально - '0', '1' и т.д.... получается что pg-драйвер уже где-то на финальной стадии делает приведение типа для параметров... зачем правда непонятно, и непонятно в чем баг...
в perldoc DBD::Pg кое-что было про bind_parm(), varchar и т.д.... но если честно, ничерта не понял! :(
...
Рейтинг: 0 / 0
prepared and run with bind parameters
    #32984797
wbear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
приводи к инту '23'::int
...
Рейтинг: 0 / 0
prepared and run with bind parameters
    #32984807
wbear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
$sth = $db->perepare("insert into my_table values (?::int,?::int,?::varchar)");
$sth->execute(1,1,"eee");
....
и т.д.
...
Рейтинг: 0 / 0
prepared and run with bind parameters
    #32984830
_YO_GA_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
так и пришлось делать....
но это ж нездоровая шняга, согласись...
приложение не мое, во скольких еще местах такое вылезет...
ладно, постараюсь поковырять все-таки этот модуль...
очень уж интересно где собака порылась
...
Рейтинг: 0 / 0
prepared and run with bind parameters
    #32984837
wbear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробуй поставит поновее DBI::Pg , какой у тебя перл?
...
Рейтинг: 0 / 0
prepared and run with bind parameters
    #32985679
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wbearперловый драйвер для PG подставляет пласехлдеры сам !!!! .. неумеет он делать perpare и executeВроде бы последний DBD::Pg версии 1.40 это умеет: perldoc DBD::Pg$sth = $dbh->prepare($statement, \%attr);

Prepares a statement for later execution. PostgreSQL supports prepared
statements, which enables DBD::Pg to only send the query once, and
simply send the arguments for every subsequent call to execute().
DBD::Pg can use these server-side prepared statements, or it can
just send the entire query to the server each time. The best way
is automatically chosen for each query. This will be sufficient for
most users: keep reading for a more detailed explanation and some
optional flags.

Deciding whether or not to use prepared statements depends on many
factors, but you can force them to be used or not used by passing
the pg_server_prepare attribute to prepare(). A "0" means to never
use prepared statements. This is the default when connected to servers
earlier than version 7.4, which is when prepared statements were introduced.
Setting pg_server_prepare to "1" means that prepared statements
should be used whenever possible. This is the default for servers
version 7.4 or higher.

...Мы работаем на постгресе 7.3, проблем с bind-ом нет, а как с этим на 7.4 и восьмерке - не знаю. :( Кажется, что в каждом prepare писать ?::integer - действительно "нездоровая шняга". :) Может быть устанавливать "pg_server_prepare => 0" при подключении к базе?
...
Рейтинг: 0 / 0
prepared and run with bind parameters
    #32985801
wbear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
думаю стоит, это гораздо лучше чем ::int .. и насколько я знаю эта фишка с использованием постгревых препаре достаточно свежая.. возможно еще недостаточно обкатанная..
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / prepared and run with bind parameters
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]