Получить массив ссылок на хеш-массив значений столбца всех записей выборки данных выполненного запроса (fetchall_hashref)

Назначение
 

Метод fetchall_hashref предоставляет ссылку на хеш-массив всех значений указанного столбца выборки данных из предварительно выполненного SQL-запроса. Он возвращает ссылку на хеш-массив, содержащий хеш-ключ для каждого уникального значения указанного столбца выборки данных. Для каждого хеш-ключа соответствующее значение является ссылкой на хеш-массив, содержащий все выбранные столбцы и их значения.

Если выборка данных пуста, метод fetchall_hashref вернет ссылку на пустой хеш-массив. Если в процессе выполнения метода по какой-либо причине (например, разрыв соединения) драйвер больше не сможет предоставлять записи выборки данных, то возвращаемый хеш-массив будет содержать ссылки только на ранее выбранные записи. Необходимо контролировать подобные ситуации, например, путем вызова $sth- >err для уточнения возможного усечения выборки данных из-за возникшей ошибки.

Параметр $key_field содержит имя поля, которое будет использоваться как хеш-ключ для полученных хеш-значений. Параметр также может содержать значение в виде порядкового номера столбца выборки данных (отсчет начинается с 1). Если параметр $key_field задан неправильно (в выборке данных нет столбцов с таким номером или именем), то возвращается ошибка. Для запросов, возвращающих более одного «ключевого» столбца, можно указать несколько имен столбцов, передав $key_field как ссылку на массив, содержащий одно или несколько ключевых имен столбцов (или индексов), например:

$sth = $dbh- >prepare("select YEAR, HORSEPWR, MAKE from AUTO;");
  $sth- >execute();
  $hash_ref = $sth- >fetchall_hashref([qw(YEAR HORSEPWR)]);
  print "Model ’71 with 150 horsepower is $hash_ref- >{71}- >{150}- >{MAKE}\n";
Пакет

Package Linter::st

Прототип
$hash_ref = $sth- >fetchall_hashref($key_field);
Параметр Описание
$key_field Имя или порядковый номер столбца (столбцов) выборки данных, используемого для формирования его хеш-массива значений
Возвращаемые значения
Переменная Описание
$hash_ref Ссылка на массив ссылок хеш-массивов значений заданных столбцов выборки данных или ссылка на пустой хеш-массив в случае отсутствия данных
$DBI::errstr Диагностическое сообщение (в случае ошибки)
Пример
my $dbh = $drh- >connect("DEMO", "SYSTEM", "MANAGER8")
or die "Could not connect to database: " . DBI- >errstr;
my $sth = $dbh- >prepare("select SERIALNO, MODEL, MAKE, COLOR from AUTO;");
$sth- >execute();
my $ary_ref = $sth- >fetchall_hashref("SERIALNO");
my @keys = keys(%$ary_ref);
for (my $i = 0; $i <  scalar(keys(%$ary_ref)); $i++)
{
    print($ary_ref- >{$keys[$i]}- >{MODEL} . "\n");
    print($ary_ref- >{$keys[$i]}- >{MAKE} . "\n");
    print($ary_ref- >{$keys[$i]}- >{COLOR} . "\n");
    print("\n");
}
$sth- >finish();
$dbh- >disconnect();