Получить запись выборки данных в виде хеш-массива значений полей записи (selectrow_hashref)
Назначение
Метод selectrow_hashref
объединяет вызовы методов prepare
, execute
и fetchrow_hashref
в один вызов. Если результатом SQL-запроса является непустая выборка данных, то метод возвращает первую запись выборки данных в виде хеш-массива элементов.
Примечание
Хеш-массив (ассоциативный массив) – это массив, доступ к данным которого осуществляется при помощи ключа, ассоциированного со значением.
Т.к. доступ к последующим записям сформированной выборки данных не поддерживается, то метод эффективно применять к SQL-запросам, возвращающим одну запись, например,
select model, make from auto where color = 'RED' limit 1; select count(*) from person;
Пакет
Package Linter::db
Прототип
$hash_ref = $dbh- >selectrow_hashref($statement); $hash_ref = $dbh- >selectrow_hashref($statement, \%attr); $hash_ref = $dbh- >selectrow_hashref($statement, \%attr, @bind_values);
Параметр | Описание | |
---|---|---|
$statement | Текст SQL-запроса (возможно, с параметрами). SQL-запрос может быть предварительно претранслирован (подготовлен с помощью метода prepare ), тогда при выполнении метода selectrow_hashref выполнение метода prepare будет пропущено | |
\%attr | Значение параметра не используется, игнорируется | |
@bind_values | Массив, содержащий значения привязываемых параметров (если SQL-запрос содержит параметры) |
Возвращаемые значения
Переменная | Описание | |
---|---|---|
$hash_ref | При наличии данных возвращается ссылка на ассоциированный массив, содержащий первую запись выборки данных. В случае отсутствия данных или при наличии ошибок выполнения методов 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, (EXTRACT(YEAR from SYSDATE) – (1900 + YEAR)) as AGE, MAKE || ' (' || BODYTYPE || ')' from AUTO where CYLNDERS = 8;"; my $hash_ref = $dbh- >selectrow_hashref($statement); print($hash_ref- >{MODEL} . "\n"); #MODEL print($hash_ref- >{COLOR} . "\n"); #COLOR print($hash_ref- >{YEAR} . "\n"); #YEAR print($hash_ref- >{CHKMILE} . "\n"); #CHKMILE print($hash_ref- >{AGE} . "\n"); #AGE print($hash_ref- >{""} . "\n"); #last unnamed column $dbh- >disconnect();