Perl DBI: fetchrow_arrayref - PullRequest
       2

Perl DBI: fetchrow_arrayref

1 голос
/ 22 октября 2010

На самом деле я выполнил запрос postgres, предположим, что он вернул 10 строк.Теперь у меня есть обработчик операторов ($ sth).

print Dumper $sth->fetchrow_arrayref;
print Dumper $sth->fetchrow_arrayref;
print Dumper $sth->fetchrow_arrayref;
print Dumper $sth->fetchrow_arrayref;
print Dumper $sth->fetchrow_arrayref;

Теперь я извлек 5 строк из обработчика операторов ($ sth. Теперь я хочу получить указатель ссылки $ sth на 1-ю строку .....

Чтоя должен делать ....?

Спасибо

Ответы [ 3 ]

4 голосов
/ 22 октября 2010

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

Вам нужно скопировать данные в массив в памяти, если вы хотите перескочить.

Самый простой способ - сделать

my $all_rows = $sth->fetchall_arrayref;

, который дает вам ссылку на массив, с одной записью для каждой строки, каждая строка в том же формате, что и fetchrow_arrayref.

1 голос
/ 22 октября 2010

В петле while.

  1. Выбрать строку.
  2. Если это то, что вы хотите сохранить, скопируйте результаты в список сохранения.
  3. См. Список сохранения всякий раз, когда вы хотите сослаться на предыдущую строку.
0 голосов
/ 22 октября 2010

еще один способ обработать результаты вашего запроса, вы можете зациклить его:

while(my $res = $sth->fetchrow_arrayref()) {do something}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...