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