Получить ссылку на хеш-массив следующей записи выборки данных (fetchrow_hashref)
Назначение
Метод fetchrow_hashref выбирает следующую запись предварительно выполненной выборки данных и возвращает ее как ссылку на хеш-массив, содержащий ключ в виде имени поля выборки данных и значение в виде значения поля выборки данных. NULL-значения полей выборки данных в хеш-массиве представлены undef-значениями.
Если выборка данных содержит дубликаты имен полей, то в выходном хеш-массиве будет представлен только один такой хеш-ключ. Например, для запроса
select MODEL, MAKE, COLOR, MODEL from AUTO;
метод fetchrow_hashref вернет только один хеш-ключ для поля MODEL. В такой ситуации необходимо использовать псевдонимы столбцов или метод fetchrow_arrayref.
Примечание
В связи с дополнительными затратами на формирование хеш-массива метод fetchrow_hashref менее эффективен по сравнению с методами fetchrow_arrayref или fetchrow_array.
По умолчанию ссылка на новый хеш-массив возвращается для каждой записи выборки данных, даже если записи полностью идентичны.
Пакет
Package Linter::st
Прототип
$hash_ref = $sth->fetchrow_hashref([\%attr]);
%attr = ('direction' => {'first' | 'last' | 'next' | 'prev' | 'number'}
'number' => {1, 2, ...}
);
Возвращаемые значения
| Переменная | Описание | |
|---|---|---|
$hash_ref | Ссылка на хеш-массив текущей записи выборки данных, undef при достижении конца выборки данных или возникновении ошибки | |
%attr | Ссылка на хеш-массив атрибутов для задания дополнительных инструкций по перемещению по выборке данных.
Значения атрибута direction:
Атрибут number используется совместно только при задании в атрибуте direction значения number и указывает номер записи в выборке, которую необходимо получить | |
$DBI::errstr | Диагностическое сообщение (в случае ошибки) |
Пример
my $dbh = $drh->connect("DEMO", "SYSTEM", "MANAGER8")
or die "Could not connect to database: " . DBI->errstr;
my $sth = $dbh->prepare("select MAKE, MODEL, YEAR from AUTO;");
$sth->execute();
while (my $data_ref = $sth->fetchrow_hashref)
{
print("MAKE = $data_ref->{MAKE}\n");
print("MODEL = $data_ref->{MODEL}\n");
print("YEAR = $data_ref->{YEAR}\n");
}
$sth->finish();
$dbh->disconnect();