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