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

  • 'first' – получить первую запись;

  • 'last' – получить последнюю запись;

  • 'next' – получить следующую запись;

  • 'prev' – получить предыдущую запись;

  • 'number' – получить запись с заданным номером.

Атрибут 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();