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