Доступные версии документации

Получить первую запись выборки данных в виде ссылки на массив значений полей записи (selectrow_arrayref)

Назначение
 

Метод selectrow_arrayref объединяет вызовы методов prepare, execute и fetchrow_arrayref в один вызов. Если результатом SQL-запроса является непустая выборка данных, то метод возвращает первую запись выборки данных в виде ссылки на массив элементов. Т. к. доступ к последующим записям сформированной выборки данных не поддерживается, то метод эффективно применять к SQL-запросам, возвращающим одну запись, например,

select model, make from auto where color = 'RED' limit 1;
select count(*) from person;
Пакет

Package Linter::db

Прототип
$ary_ref = $dbh->selectrow_arrayref($statement);

$ary_ref = $dbh->selectrow_arrayref($statement, \%attr);

$ary_ref = $dbh->selectrow_arrayref($statement, \%attr, @bind_values);
Параметр Описание
$statement  Текст SQL-запроса (возможно, с параметрами). SQL-запрос может быть предварительно претранслирован (подготовлен с помощью метода prepare), тогда при выполнении метода selectrow_arrayref выполнение метода prepare будет пропущено
\%attr  Значение параметра игнорируется
@bind_values  Массив, содержащий значения привязываемых параметров (если SQL-запрос содержит параметры)
Возвращаемые значения
Переменная Описание
$ary_ref  При наличии данных возвращается ссылка на массив, содержащий первую запись выборки данных. В случае отсутствия данных или при наличии ошибок выполнения методов prepare и/или execute возвращается undef
$DBI::errstr  Диагностическое сообщение (в случае ошибки выполнения метода)
Пример
my $dbh = $drh->connect("DEMO", "SYSTEM", "MANAGER")
        or die "Could not connect to database: " . DBI->errstr;
my @bind_values = (71, 4);
my $sth = $dbh->prepare("select * from AUTO where YEAR = ? and
                         CYLNDERS = ?;");
my $ary_ref = $dbh->selectrow_arrayref($sth, undef, @bind_values);
for (my $i = 0; $i < scalar($@ary_ref); $i++)
{
    print($ary_ref->[$i] . "\n");
}
$sth->finish();
$dbh->disconnect();
Заметили ошибку?
Выделите текст и нажмите Ctrl + Enter