Получить значения всей выборки данных в виде массива хеш-массивов (selectall_hashref)
Назначение
Метод selectall_hashref объединяет вызовы методов prepare, execute и fetchall_hashref в один вызов. Если результатом SQL-запроса является непустая выборка данных, то метод возвращает ссылку на хеш-массив, элементами которого являются хеш-массивы значений полей SQL-запроса.
Пакет
Package Linter::db
Прототип
$hash_ref = $dbh->selectall_hashref($statement, $key_field); $hash_ref = $dbh->selectall_hashref($statement, $key_field, \%attr); $hash_ref = $dbh->selectall_hashref($statement, $key_field, \%attr, @bind_values);
| Параметр | Описание | |
|---|---|---|
$statement | Текст SQL-запроса (возможно, с параметрами). SQL-запрос может быть предварительно претранслирован (подготовлен с помощью метода prepare), тогда при выполнении метода selectall_hashref выполнение метода prepare будет пропущено | |
%key_field | Задает имя, которое должно использовать как хеш-ключ возвращаемого хеш-массива. Параметр может быть задан в виде ссылки на массив с несколькими именами, что приведет к созданию дерева вложенных хешей. Если хеш-ключ добавляемой в выборку данных записи совпадает с хеш-ключом ранее вставленной записей, то старая запись заменяется новой | |
\%attr | См. метод selectall_array | |
@bind_values | Массив, содержащий значения привязываемых параметров (если SQL-запрос содержит параметры) |
Возвращаемые значения
| Переменная | Описание | |
|---|---|---|
$hash_ref | При наличии данных возвращается ссылка на хеш-массив, элементами которого являются хеш-массивы
значений полей SQL-запроса. В случае отсутствия данных или при наличии ошибок выполнения методов
prepare и/или execute возвращается undef | |
$DBI::errstr | Диагностическое сообщение (в случае ошибки выполнения метода) |
Пример
my $dbh = $drh->connect("DEMO", "SYSTEM", "MANAGER8")
or die "Could not connect to database: " . DBI->errstr;
my $statement = "select MODEL, COLOR, YEAR, CHKMILE from AUTO;";
my $hash_ref = $dbh->selectall_hashref
("select MODEL, COLOR, YEAR, CHKMILE from AUTO;", 2);
my @ary_keys = keys(%{ $hash_ref });
for (my $i = 0; $i < scalar(@ary_keys); $i++)
{
my $key = $ary_keys[$i];
print($hash_ref->{$key}{MODEL} . "\n");
print($hash_ref->{$key}{COLOR} . "\n");
print($hash_ref->{$key}{YEAR} . "\n");
print($hash_ref->{$key}{CHKMILE} . "\n");
print($hash_ref->{$key}{CHKMILE} . "\n");
print("\n");
}
$dbh->disconnect();