Получить ссылку на хеш-массив следующей записи выборки данных (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();